comparer des lignes sur macro excel

comparer des lignes sur macro excel - VB/VBA/VBS - Programmation

Marsh Posté le 03-02-2012 à 15:51:52    

Bonjour a tous,
 
 
voila je pense qu'il y a deja eu ce probleme auparavant mais je suis débutant en vba et je n'arrive a résoudre un probleme sur lequel je suis depuis un bon bout de temps maintenant!!
 
 
voila en fait j'ai deux feuilles excel.  
La premiere contient des données importées depuis une base de données et lautres contient les mêmes données mais avec quelque difference.
 
En effet la dans la premiere feuille il ya des numero (1350,1351..) et dans la deuxieme feuilles on retrouve parfois les mm numéros sauf qu'il y a une lettre avant (R1350,R1351...).  
 
Ce que j'essaye de faire c'est comparer ces lignes et si on retrouve les mm chiffre alors elle affiche un message (genre "ok" ) dans une troisieme feuille. Mon soucis est de comparer c'est lignes mais en faisant disparaitre cette lettre
 
 
voila j'espere que j'ai était claire je vous remercie d'avance pour votre aide!!!!! :)
 
 
 
voila un bout de code que j'ai fait pour le moment :
 
Private Sub CommandButton12_Click()
 
 
'Définition des variables
 j As Long
 
'Permet de ne pas afficher le message de fermeture de fichier
Application.DisplayAlerts = False
 
 
 
 
 
 
 j = 2
While Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1) <> ""
 
 
      If Mid(Sheets("BL Interne" ).Cells(j, 4), 2) <> Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2) Then
       
      Sheets("Feuil1" ).Cells(j, 1) = "yes"
     
     
       
       
     
      End If
j = j + 1
Wend
 
 
 
 
 
End Sub
 
 
 

Reply

Marsh Posté le 03-02-2012 à 15:51:52   

Reply

Marsh Posté le 03-02-2012 à 15:56:19    

" If Mid(Sheets("BL Interne" ).Cells(j, 4), 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2) Then "
 
Désolé je rectifie cette faute de frappe!!

Reply

Marsh Posté le 03-02-2012 à 16:14:01    

Bonjour,
qu'est ce qui ne fonctionne pas
ca m'a l'air correct

Reply

Marsh Posté le 03-02-2012 à 16:17:31    

Merci 86vomito33 d'avoir pris le temps de lire mon message!!
 
le probleme c'est que rien ne saffiche sur la troisieme feuille ("feuil1" ) alors que c'est censé m'afficher "yes" !! :/

Reply

Marsh Posté le 03-02-2012 à 16:21:48    

et si tu remplaces ton <> (différent) par un =


Message édité par 86vomito33 le 03-02-2012 à 16:22:35
Reply

Marsh Posté le 03-02-2012 à 16:26:19    

oui en fait je mettais tromper c'est pour sa j'ai rectifier mais sa ne marche toujours pas au contraire quand je met "<>" sa m'affiche le message et quand je met "="  sa ne fait rien alors que sa devrait etre l'inverse. Déeolé de t'importuner!!!

Reply

Marsh Posté le 03-02-2012 à 16:31:27    

ca doit etre lié au fait que tu compares du texte et un nombre
 
essai str(Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2))

Reply

Marsh Posté le 03-02-2012 à 16:41:52    

Sa ne marche pas cela m'affiche une erreur de "compilation" sur le "str"!! pour info c'est la feuille "BL Interne" qui contient les "R1300,...." et c'est Export ANO_ITEM_LIV qui contien parfois les mêmes chiffre mais sans les lettres.

Reply

Marsh Posté le 03-02-2012 à 16:47:01    

cells(j,2).value
 
mets une version allegee de ton fichier excel sur cjoint et donne nous le lien
 
la je vois pas

Reply

Marsh Posté le 03-02-2012 à 16:55:13    

comment fait on pour vous transferez un fichier?? desolé...

Reply

Marsh Posté le 03-02-2012 à 16:55:13   

Reply

Marsh Posté le 03-02-2012 à 16:55:55    

Reply

Marsh Posté le 03-02-2012 à 16:56:57    

à l'inverse essai if val(Mid(Sheets("BL Interne" ).Cells(j, 4), 2))= Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2) Then


Message édité par 86vomito33 le 03-02-2012 à 16:57:27
Reply

Marsh Posté le 03-02-2012 à 17:01:09    

Reply

Marsh Posté le 03-02-2012 à 17:02:29    

La premiere feuille correspond au "BL Interne" et la deuxieme a "Export ANO_ITEM_LIV".

Reply

Marsh Posté le 03-02-2012 à 17:07:16    

au fait c dim j as integer

Reply

Marsh Posté le 03-02-2012 à 17:08:37    

du coup ca marche
 
et n'oubli pas de remettre Application.DisplayAlerts = True avant end sub

Reply

Marsh Posté le 03-02-2012 à 17:17:28    

en fait je viens d'essayer ce que tu m'as dit et s'a maffiche le message a la ligne 42 de la feuille export ano_item_liv! et dans cette ligne il n'y a pas de numéros!! je sais pas pourquoi cela fait sa !!!

Reply

Marsh Posté le 03-02-2012 à 17:23:41    

abder92 a écrit :

Bonjour a tous,
 
 
voila je pense qu'il y a deja eu ce probleme auparavant mais je suis débutant en vba et je n'arrive a résoudre un probleme sur lequel je suis depuis un bon bout de temps maintenant!!
 
 
voila en fait j'ai deux feuilles excel.  
La premiere contient des données importées depuis une base de données et lautres contient les mêmes données mais avec quelque difference.
 
En effet la dans la premiere feuille il ya des numero (1350,1351..) et dans la deuxieme feuilles on retrouve parfois les mm numéros sauf qu'il y a une lettre avant (R1350,R1351...).  
 
Ce que j'essaye de faire c'est comparer ces lignes et si on retrouve les mm chiffre alors elle affiche un message (genre "ok" ) dans une troisieme feuille. Mon soucis est de comparer c'est lignes mais en faisant disparaitre cette lettre
 
 
voila j'espere que j'ai était claire je vous remercie d'avance pour votre aide!!!!! :)
 
[...]
 
 


 
Salut,
 
Es-tu obligé d'utiliser vba dans ton travail ? Ce qui t'est demandé semble faisable avec les fonctions standard, simplement en tirant une formule dans la troisième feuille
 
Ce serait une formule du style =SI(EXACT(a!A2;STXT(b!A2;2;NBCAR(b!A2)-1));"OK";"KO", où les 2 premieres feuilles ont pour nom a et b.
 
Encore plus sympa, tu peux te passer de la troisieme feuille et faire un coloriage sur les 2 premieres en utilisant la mise en forme conditionnelle.

Reply

Marsh Posté le 03-02-2012 à 17:27:30    

Salut alcaa,
 
merci de ton aide et ou en effet je suis obligé d'utiliser vba :/!! j'avais penser a faire ta technique mais c'est vrai je n'ai jamais essayé!! je m'y met de suite merci pour ton aide !! :)

Reply

Marsh Posté le 03-02-2012 à 17:48:24    

je suis obliger de le faire en vba. et je bloque toujours!! pouvez vous m'aider ?? :/ desolé de vous importuner!!

Reply

Marsh Posté le 03-02-2012 à 17:59:22    

je suis pas sur d'avoir compris ce que tu souhaite faire
 
peux tu mettre sur une feuille excel ce a quoi ressemblerait ta feuil1 si tout marchait parfaitement
 
parce que si c'est simplement des yes je vois pas comment tu l'exploiteras

Reply

Marsh Posté le 03-02-2012 à 18:05:27    

en fait ce n'est pas s'implement des "yes" il faudrait aussi que si il n'y a pas concordance qu'au lieu d'afficher "yes" il m'affiche le contenu de la cellule "Nom" du BL Interne ou sa bloque.
 
voila un exemple http://cjoint.com/?BBdsfgxFNWg

Reply

Marsh Posté le 03-02-2012 à 18:28:13    

ya rien dans feuil3

Reply

Marsh Posté le 03-02-2012 à 18:34:22    

abder92 a écrit :

en fait ce n'est pas s'implement des "yes" il faudrait aussi que si il n'y a pas concordance qu'au lieu d'afficher "yes" il m'affiche le contenu de la cellule "Nom" du BL Interne ou sa bloque.

 

voila un exemple http://cjoint.com/?BBdsfgxFNWg

 


Après avoir vu le fichier, je comprends que tes Feuil1 et Feuil2 ne correspondent pas du tout ligne à ligne.
Il faut donc pour chaque ligne faire une recherche de "R" + 1xxxxx dans la colonne D de la feuille 1.
Ca peut se faire en utilisant

 


result = Application.Match( concatenate("R", id), Range(Range("D2" ), Range("D2" ).End(xlDown)))

 

If iserror(result) Then
   'mettre une erreur
Else
   'mettre le contenu de la cellule "Nom" du BL Interne ou sa bloque.
End if

 

(code approximatif)


Message édité par alcaa le 03-02-2012 à 18:36:15
Reply

Marsh Posté le 06-02-2012 à 09:41:13    

Désolé j'ai pas pu repondre ce week end et je viens de me rendre compte qu'en effet je n'avais pas partager le bon fichier!! desolé 86vomito33 le voici!  
http://cjoint.com/?BBgjOZV7WUM
 
merci pour ton aide alcaa je vais tester ta proposition!! merci encore :)

Reply

Marsh Posté le 06-02-2012 à 11:20:04    

la fonction concatenate ne marche pas, sa me fait une erreur, je pense que c'est sur la bonne voie...quelqu'un aurait une idée?? :/

Reply

Marsh Posté le 06-02-2012 à 19:46:39    

je te renvois le fichier modifier
 
http://cjoint.com/?BBgtOVTI4VB
 
sur la feuille 2 colonne E tu peux voir la fonction recherche v. modifie la pour récupére la bonne colonne.
 
je pense qu'il faudrait faire un tri croissant de ta BdD par rapport au bug ID pour éviter les erreurs

Reply

Marsh Posté le 07-02-2012 à 12:35:38    

merci 86vomito33 pour ta proposition mais finalement jai gardé la premiere idée que tu m'avais suggéré au début et sa marche parfaitement :) merci pour ton aide!!!! :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed