Comparer deux colonnes avec N° commençant par

MsVixene

XLDnaute Nouveau
Bonjour,

j'ai un code qui ne fonctionne pas et je ne sais pas quoi faire car ce n'est pas moi qui l'ai fait et je n'arrive pas à le lire en plus :p L'exécution est plutot longue.

J'aimerais comparer deux colonnes de deux onglets de ma feuille.

Si la colonne 10 d'EXTRACTION = colonne 1 de A ENLEVER
Alors mettre OUI
Sinon NON

Sachant que la composition de ma colonne 1 de A ENLEVER est par exemple :

9AUTO
9MONT
BAT GARAG1
BAT GARAG2
BAT%------------------------->tout les N° commençant par BAT
12605
15896

Code:
Sub Comparaison1()
Set sheet1 = ThisWorkbook.Sheets("EXTRACTION")
Set sheet2 = ThisWorkbook.Sheets("A ENLEVER")
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(Arow_no, 2).Value = sheet2.Cells(Erow_no, 1).Value) Then
         flag_found = "Y"
         Exit Do
      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
End Sub

Donc cette maccro me met des OUI sur toutes les lignes sauf 2. (pour lesquelles les conditions ne sont pas respectées).

J'étais partie sur ceci que je comprenais mais j'ai des bloquants aussi :

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

Merci
 

MsVixene

XLDnaute Nouveau
Re : Comparer deux colonnes avec N° commençant par

Non mais peu importe, si vous aviez mis dans l'autre sens, il y aurait eu des OUI partout, à ce moment là j'aurais inversé. Mais le resultat est le même pour toutes les lignes de l'exemple... J'ai oublié de mettre une ligne qui doit avoir OUI du coup lol

EDIT : en fait je ne comprends pas quand tu parles de double négation ? Puisque si les N° des deux colonnes sont égaux, mettre NON, ne veut pas dire double négation si ?
 

camarchepas

XLDnaute Barbatruc
Re : Comparer deux colonnes avec N° commençant par

Bonjour à tous ,

du beau monde au rendez vous ...

Peux-tu essayer ce code ?


Code:
Option Explicit

Sub Tag_()
Dim Tourne As Long, LigneFin As Long
Dim Trouve As Range

LigneFin = Sheets("Extraction").Range("B" & Rows.Count).End(xlUp).Row

For Tourne = 2 To LigneFin
  Set Trouve = Sheets("A enlever").Range("A:A").Find(CStr(Sheets("Extraction").Range("B" & Tourne)), lookat:=xlWhole)
  If Trouve Is Nothing Then
       Sheets("Extraction").Range("J" & Tourne) = "Oui"
    Else
       Sheets("Extraction").Range("J" & Tourne) = "Non"
  End If
Next Tourne
End Sub
 

MsVixene

XLDnaute Nouveau
Re : Comparer deux colonnes avec N° commençant par

Ok, l'extraction sort des données numériques normalement, (pas stockées sous forme de texte) mais comme j'ai mis manuellement 10300 et 10621 par exemple, le code fonctionne sur ceux-ci.

Je ne peux malheureusement pas changer de format, à moins de rajouter des lignes pour dire de le changer :D

EDIT : en fait, si, les nombres sont stockés sous forme de texte....... J'comprends rien lol
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : Comparer deux colonnes avec N° commençant par

Par contre ma solution ne marche pas pour les caractères générique %,
donc ma solution n'est pas ok.

JE planche donc pour une autre solution. bon , dans ton fichier exemple les oui et non étaient les bon c'est cela .

Ok, je prends donc comme modele
 

MsVixene

XLDnaute Nouveau
Re : Comparer deux colonnes avec N° commençant par

Pour repréciser : En fait ça veut juste dire "commence par" les %, si tu veux changer celà, pas de soucis par contre !
J'ai par exemple, des N° qui commence par BAT, mais je ne peux pas tous les mettre dans la liste.

J'ai remis pareil que dans une requête SQL dont on se sert.
 

pierrejean

XLDnaute Barbatruc
Re : Comparer deux colonnes avec N° commençant par

Re

Salut camarchepas (c'est ben vrai ça !!!!)

@ MsVixene

Peux-tu nous expliquer, par exemple ,pourquoi il doit y avoir NON en ligne 10 ainsi qu'en ligne 11 ?
Cela nous aiderait à comprendre
 

MsVixene

XLDnaute Nouveau
Re : Comparer deux colonnes avec N° commençant par

En ligne 10 et 11 il y a 4AUTO et LOG033 donc il faut mettre NON car ils sont dans la liste A ENLEVER ou "commence par" un qui est dans la liste A ENLEVER :

N° INVENTAIREPOURQUOI METTRE NON
Log033car commence par Log
4Autocar est dans la liste A ENLEVER
BAT BARAGE 1car commence par BAT
 

camarchepas

XLDnaute Barbatruc
Re : Comparer deux colonnes avec N° commençant par

Bon j'en perds mon lapin ,

allez j'essaye encore

Code:
Sub Traite()
Dim Tourne As Long, Boucle As Long
Dim LigneFin1 As Long, LigneFin2 As Long
Dim Tempo As Variant, Tempo2 As Variant
Dim Decis As String

LigneFin1 = Sheets("Extraction").Range("B" & Rows.Count).End(xlUp).Row
LigneFin2 = Sheets("A enlever").Range("A" & Rows.Count).End(xlUp).Row
 For Boucle = 2 To LigneFin1
   For Tourne = 2 To LigneFin2
    Tempo = Sheets("Extraction").Range("B" & Boucle)
    Tempo2 = Sheets("A enlever").Range("A" & Tourne)
     If InStr(1, Tempo2, "%") > 0 Then
        If InStr(1, Tempo, Mid(Tempo2, 1, Len(Tempo2) - 1)) Then
            Decis = "Non": Exit For
          Else
            Decis = "Oui" ': Exit For
        End If
      Else
        If Tempo = Tempo2 Then
            Decis = "Non": Exit For
          Else
           Decis = "Oui" ': Exit For
        End If
     End If
   Next Tourne
    Sheets("Extraction").Range("J" & Boucle) = Decis
 Next Boucle

End Sub
 

MsVixene

XLDnaute Nouveau
Re : Comparer deux colonnes avec N° commençant par

C'est presque bon :

Ca marche pour tout sauf pour les Numéros du genre 10621 car le problème c'est qu'ils sont en texte dans l'extraction !
Peut-on caser un changement de format pour aligner avec les autres ?
 

camarchepas

XLDnaute Barbatruc
Re : Comparer deux colonnes avec N° commençant par

Ok ,

Donc en changeant la déclaration des tempo de variant en string

Code:
Sub Traite()
Dim Tourne As Long, Boucle As Long
Dim LigneFin1 As Long, LigneFin2 As Long
Dim Tempo As String, Tempo2 As String
Dim Decis As String

LigneFin1 = Sheets("Extraction").Range("B" & Rows.Count).End(xlUp).Row
LigneFin2 = Sheets("A enlever").Range("A" & Rows.Count).End(xlUp).Row
 For Boucle = 2 To LigneFin1
   For Tourne = 2 To LigneFin2
    Tempo = Sheets("Extraction").Range("B" & Boucle)
    Tempo2 = Sheets("A enlever").Range("A" & Tourne)
     If InStr(1, Tempo2, "%") > 0 Then
        If InStr(1, Tempo, Mid(Tempo2, 1, Len(Tempo2) - 1)) Then
            Decis = "Non": Exit For
          Else
            Decis = "Oui" ': Exit For
        End If
      Else
        If Tempo = Tempo2 Then
            Decis = "Non": Exit For
          Else
           Decis = "Oui" ': Exit For
        End If
     End If
   Next Tourne
    Sheets("Extraction").Range("J" & Boucle) = Decis
 Next Boucle

End Sub
 

Discussions similaires

Réponses
6
Affichages
248

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 378
dernier inscrit
phdrouart