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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comparer deux colonnes sur deux feuilles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comparer deux colonnes sur deux feuilles

n°2234281
MsVixene
Posté le 28-07-2014 à 14:28:17  profilanswer
 

Bonjour,
 
après avoir parcouru quelques sujets similaires, je ne trouve pas réponse à mon soucis:
 
J'aimerais comparer deux colonnes de deux feuilles, pour mettre oui ou non selon résultat dans une autre colonne.
 

Code :
  1. Sub ComparerN°Inv2()
  2. Dim I As Single
  3. Dim J As Single
  4. For I = 1 To Worksheets("EXTRACTION" ).Range("B2" ).End(xlDown).Row
  5. For J = 1 To Worksheets("A ENLEVER" ).Range("A1" ).End(xlDown).Row
  6. If I.Value = J.Value Then
  7. Worksheets("EXTRACTION" ).Cells(I, 10).Value = "Oui"
  8. Else: Worksheets("EXTRACTION" ).Cells(I, 10).Value = "Non"
  9. End If
  10. Next I
  11. End Sub


 
Excusez le caractère brouillon de la chose...
 
Merci!

mood
Publicité
Posté le 28-07-2014 à 14:28:17  profilanswer
 

n°2234284
Yonel
Monde de merde !
Posté le 28-07-2014 à 14:51:28  profilanswer
 

Oh mais pourquoi tu écris du code pour faire ça ?? C'est déjà ce que fait la fonction VLOOKUP (ou RECHERCHEV en français)

n°2234285
MsVixene
Posté le 28-07-2014 à 14:53:36  profilanswer
 

Parce que je viens ramener régulièrement un nouvel onglet Extraction issu de SAP :)
 
et je veux automatiser le truc car les futurs utilisateurs ne sont pas capables de manipuler l'ensemble du fichier (qui bien sur ne comporte pas seulement cette petite maccro)
 
:D

n°2234306
olivthill
Posté le 28-07-2014 à 16:45:37  profilanswer
 

Il manque un

Next J.


 
Edit : Et au lieu de

If I.Value = J.Value Then


avoir


Set sheet1 = ThisWorkbook.Sheets("Nom_de_la_feuille" )
...
If (sheet1.Cells(i, 2) = sheet1.Cells(j, 1)) Then


 
Edit2 :
Et les boucles For I = 1 ... For J = 1 ... me paraissent étranges.
Je ferais plutôt :

Set sheet1 = ThisWorkbook.Sheets("Nom_de_la_feuille 1" )
Set sheet2 = ThisWorkbook.Sheets("Nom_de_la_feuille 2" )
Ecol_no = 2
Erow_no = 2
Do While Not IsEmpty(Sheet1.Cells(Erow_no, Ecol_no).Value)
   Acol_no = 1
   Arow_no = 1
   flag_found = "N"
   Do While Not IsEmpty(Sheet2.Cells(Arow_no, Acol_no).Value)
      If (sheet1.Cells(i, 2).Value = sheet2.Cells(j, 1).Value) Then
         flag_found = "Y"
         Exit Loop
      End If
      Arow_no = Arow_no + 1
   Loop
   If (flag_found = "N" ) Then
      Worksheets("EXTRACTION" ).Cells(Erow_no, 10).Value = "Oui"
      Else: Worksheets("EXTRACTION" ).Cells(Erow_no, 10).Value = "Non"
   End If
   Erow_no = Erow_no + 1
Loop


Message édité par olivthill le 28-07-2014 à 17:09:20
n°2234320
Marc L
Posté le 28-07-2014 à 18:35:45  profilanswer
 

 
            :non:  Pas de cross posting sauvage ‼
 
           Voir ici
 

n°2234357
MsVixene
Posté le 29-07-2014 à 09:25:05  profilanswer
 

Olivthill, ça me met erreur de synthaxe sur Exit Loop ?
 
Marc L, sujet trop long et Nico Chg plus dispo pour répondre ;)

n°2234377
olivthill
Posté le 29-07-2014 à 11:30:55  profilanswer
 

Désolé, c'est un Exit Do qu'il faut avoir.


Message édité par olivthill le 29-07-2014 à 11:31:14
n°2234400
MsVixene
Posté le 29-07-2014 à 16:42:45  profilanswer
 

Merci. Par contre, maintenant il y a un bloquant : erreur d'exécution à la ligne :
 

Code :
  1. If (sheet1.Cells(i, 2).Value = sheet2.Cells(j, 1).Value) Then


 
 
 

n°2234436
olivthill
Posté le 29-07-2014 à 20:07:38  profilanswer
 

Oh, c'est encore pas grand chose, juste remplacer i et j par les indices idoines.
 
If (sheet1.Cells(Arow_no, 2).Value = sheet2.Cells(Erow_no, 1).Value) Then

n°2234473
MsVixene
Posté le 30-07-2014 à 10:54:07  profilanswer
 

Je n'ai plus d'erreur, mais le oui/non ne marche pas, je n'ai que deux non dans la liste (et je me demande d'ailleurs pourquoi ces deux là)
 
Après je pense qu'il y a une histoire de format entre les colonnes comparée.
 
Un extrait de la liste A ENLEVER que je compare avec l'onglet Extraction :
 
9AUTO
9MONT
BAT GARAG1
BAT GARAG2
BAT%
BATGLORIA
BAUTO
CAUTO
CHAUFAUT
CHAUFAUTO
DAUTO
EAUX
EBAT%
ECOND%
EFABR%
 
Le % indique qu'il ya quelque chose après et le format est standard.
 
Le format par defaut de l'onget EXTRACTION est texte.
 
J'espère être plus claire :/


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

  Comparer deux colonnes sur deux feuilles

 

Sujets relatifs
Interaction de colonnes en HTMLSéparer 4 colonnes dans une listbox VBA Excel
Remplir plusieurs feuilles ExcelComparer deux cellule
Faire un tri dans un tableau avec un nombre de colonnes et lignes aléanommer le contenu d'un nombre de feuilles aléatoire [XL2013]
Comment dupliquer certaines colonnes d'un tableau en javascript?Trier des donnees sur deux colonnes ( ID + Version)
comparer et mettre a jour 2 tables en SQLComparer deux listes en multicritères
Plus de sujets relatifs à : Comparer deux colonnes sur deux feuilles


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