Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1659 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  comparer des lignes sur macro excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comparer des lignes sur macro excel

n°2124774
abder92
Posté le 03-02-2012 à 15:51:52  profilanswer
 

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
 
 
 

mood
Publicité
Posté le 03-02-2012 à 15:51:52  profilanswer
 

n°2124775
abder92
Posté le 03-02-2012 à 15:56:19  profilanswer
 

" 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!!

n°2124785
86vomito33
Posté le 03-02-2012 à 16:14:01  profilanswer
 

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

n°2124786
abder92
Posté le 03-02-2012 à 16:17:31  profilanswer
 

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" !! :/

n°2124787
86vomito33
Posté le 03-02-2012 à 16:21:48  profilanswer
 

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


Message édité par 86vomito33 le 03-02-2012 à 16:22:35
n°2124789
abder92
Posté le 03-02-2012 à 16:26:19  profilanswer
 

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!!!

n°2124792
86vomito33
Posté le 03-02-2012 à 16:31:27  profilanswer
 

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

n°2124794
abder92
Posté le 03-02-2012 à 16:41:52  profilanswer
 

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.

n°2124795
86vomito33
Posté le 03-02-2012 à 16:47:01  profilanswer
 

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

n°2124798
abder92
Posté le 03-02-2012 à 16:55:13  profilanswer
 

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

mood
Publicité
Posté le 03-02-2012 à 16:55:13  profilanswer
 

n°2124799
86vomito33
Posté le 03-02-2012 à 16:55:55  profilanswer
 
n°2124800
86vomito33
Posté le 03-02-2012 à 16:56:57  profilanswer
 

à 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
n°2124802
abder92
Posté le 03-02-2012 à 17:01:09  profilanswer
 
n°2124803
abder92
Posté le 03-02-2012 à 17:02:29  profilanswer
 

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

n°2124804
86vomito33
Posté le 03-02-2012 à 17:07:16  profilanswer
 

au fait c dim j as integer

n°2124805
86vomito33
Posté le 03-02-2012 à 17:08:37  profilanswer
 

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

n°2124806
abder92
Posté le 03-02-2012 à 17:17:28  profilanswer
 

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 !!!

n°2124807
alcaa
Posté le 03-02-2012 à 17:23:41  profilanswer
 

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.

n°2124809
abder92
Posté le 03-02-2012 à 17:27:30  profilanswer
 

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 !! :)

n°2124811
abder92
Posté le 03-02-2012 à 17:48:24  profilanswer
 

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

n°2124812
86vomito33
Posté le 03-02-2012 à 17:59:22  profilanswer
 

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

n°2124814
abder92
Posté le 03-02-2012 à 18:05:27  profilanswer
 

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

n°2124815
86vomito33
Posté le 03-02-2012 à 18:28:13  profilanswer
 

ya rien dans feuil3

n°2124817
alcaa
Posté le 03-02-2012 à 18:34:22  profilanswer
 

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
n°2124986
abder92
Posté le 06-02-2012 à 09:41:13  profilanswer
 

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 :)

n°2125012
abder92
Posté le 06-02-2012 à 11:20:04  profilanswer
 

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?? :/

n°2125090
86vomito33
Posté le 06-02-2012 à 19:46:39  profilanswer
 

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

n°2125172
abder92
Posté le 07-02-2012 à 12:35:38  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  comparer des lignes sur macro excel

 

Sujets relatifs
A supprimerdeplacer par macro la feuille à l'écran
[Résolu] Petite aide vba ExcelExcel macro, grille de nombre, changer couleur fond selon choix
Intégration d"une macrocréer une boite de dialogue pour rentrer une valeur dans excel
[VBA Excel] Problème chemin absolu 2 classeurs - 2 chemins différents[VBA Excel] concatener nom de champ et variable
Macro Word recherche chaine avec retour a la ligneexcel aide macro pr comparer des lignes
Plus de sujets relatifs à : comparer des lignes sur macro excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR