CONDITION comparé deux celulle

Bonjour, j'ai un petit programme qui doit comparé deux cellule dans deux feuille différente ex : Feuille 1 = A2 , Feuille 2 = A2, le but est de savoir si le contenu texte de cellule A2 Feuille 1 est égale a A2 Feuille 2,

voici le code :

For i = 2 To NblF1

CritereF1 = Sheets(NomF1).Cells(i, colcpt1) & Sheets(NomF1).Cells(i, colcpt2) & Sheets(NomF1).Cells(i, colcpt3)
For j = 2 To NblF2
CritereF2 = Sheets(NomF2).Cells(j, colcpt1) & Sheets(NomF2).Cells(j, colcopt2) & Sheets(NomF2).Cells(i, colcpt3)

If (CritereF1 = CritereF2) Then
MsgBox "Les deux critère sont égaux"
End If

La condition ne s’exécute pas et je ne vois pas mon erreur :( , au secours ...

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour Noha- Diak, bonjour le forum,

    Incompréhensible !... Tu parle de deux cellules, le code lui en montre 3. Tu ne nous donnes qu'un bout de code et nous ne savons rien des variables colcpt1, colcpt2 et colcpt3 ni de NblF1... Je vois mal comment on pourrait t'aider !... Nous ne somme pas des devins. Si tu fais pas un effort nous n'en ferons pas non plus...
    1. Dim NomF1
      Dim NomF2
      Dim NbCol As Integer
      Dim NbLig As Integer
      Dim i, j, NblF1, NblF2 As Integer

      NomF1 = Sheets(1).Name
      NomF2 = Sheets(2).Name

      If (NomF1) = "REF_VALEUR_FAMILLE" Then
      MsgBox "le fichier est bien "

      colcpt1 = 1
      colcpt2 = 2
      colcpt3 = 6
      For i = 2 To NblF1 ' i est égale a 2 pour NblF1

      CritereF1 = Sheets(NomF1).Cells(i, colcpt1) & Sheets(NomF1).Cells(i, colcpt2) & Sheets(NomF1).Cells(i, colcpt3)
      For j = 2 To NblF2 ' j est égale a 2 pour NblF2
      CritereF2 = Sheets(NomF2).Cells(j, colcpt1) & Sheets(NomF2).Cells(j, colcopt2) & Sheets(NomF2).Cells(i, colcpt3)
      If (CritereF1 = CritereF2) Then
      MsgBox "Le critère correspond"
      ' colorie la cellule en rouge

      End If

      Voici le code au complét, c'est mon premier message sur un forum, je m'excuse pour le manque d'information :(
    2. je compare 3 cellule plus précisément la cellule A B et F qui contiennent chacun une information extrait d'une base que j'ai corriger manuellement, le but est de extraire les donnée de la même base tout les 15 jours pour comparé la feuille 1 avec la feuille 2, colcpt1 = A , colcpt2 = B , colcpte3 = F.
      je compteur commence a 2 parce que la première donné se trouve a la deuxième ligne
    3. Contributeur
      @Noha-Diaket le compteur s’arrête à combien?
    4. normalement a 7722 s'il n' y a pas eu de changement sur les donne de la table dans les 15 dernier jours , je souhaite juste avoir la solution pour comparé le contenu des deux cellule dans les deux feuille
  2. Contributeur
    bonjour, suggestions:
    - ajouter "option explicit" en début de module.
    - modifier provisoirement ton code, pour comprendre ce qu'il fait:
    If (CritereF1 = CritereF2) Then 
        MsgBox "Les deux critère sont égaux" 
    else
        MsgBox "Les deux critères sont différents: " &  CritereF1 & ", " & CritereF2  
    End If  
    1. Bonjour, je vient de faire le test du code :

      If (CritereF1 = CritereF2) Then
      MsgBox "Les deux critère sont égaux"
      else
      MsgBox "Les deux critères sont différents: " & CritereF1 & ", " & CritereF2
      End If

      Le résultat qu'il m'affiche est que les deux critère sont égaux
    2. Contributeur
      @Noha-Diakas-tu testé ce code isolément, ou bien as-tu adapté ton code principal? je suggérais d'ajouter le else dans ton if existant...
    3. j'ai tester avec la méthode "set" puis comparé sauf que cela m'affichait toujours la même réponse dans ma condition peut importe quelle soit vrais ou fausse ^^
    4. Contributeur
      @Noha-Diakpeux-tu partager ton code complet, du début à la fin? modifié tel que suggéré en #2.
    5. sa fonctionner pour le moment , le but est si le fichier ouvert est un des nom de fichier référencer compare le première feuille a la second si il y a une erreur colorier le fond de la cellule en une autre couleur.

      Si pour vous sa semble correct et logique , votre opinion et expérience m’intéresse j'ai contourné le problème avec une boucle qui me semble plus simple d'utilisation

      J'ai trouvé une autre méthode, je vous partage le code :

      Dim NomF1
      Dim NomF2
      Dim NbLig As Integer
      Dim i As Integer
      Dim colA, colB, colF

      NomF1 = Sheets(1).Name
      NomF2 = Sheets(2).Name

      If (NomF1) = "Nomfichier" Then
      MsgBox "le fichier est 'Nomfichier' "

      colA = 1 ' colonne A utiliser pour ce fichier
      colB = 2 ' colonne B utiliser pour ce fichier
      colF = 6 ' Colonne F utiliser pour ce fichier

      i = 2 ' on initialise le compteur a 2 qui correspond a la première ligne que l'on verifie
      NbLig = Cells.SpecialCells(xlCellTypeLastCell).Row ' compte le nombre de ligne du fichier
      While (i <= NbLig)
      CritereF1 = Sheets(NomF1).Cells(i, colA)
      CritereF2 = Sheets(NomF2).Cells(i, colA)
      CritereF3 = Sheets(NomF1).Cells(i, colB)
      CritereF4 = Sheets(NomF2).Cells(i, colB)
      CritereF5 = Sheets(NomF1).Cells(i, colF)
      CritereF6 = Sheets(NomF2).Cells(i, colF)

      If ((CritereF1) = (CritereF2)) Then ' ligne trouvé
      'MsgBox "les critere des colonnes A correspond"
      Else
      'MsgBox "les critere des colonnes A Ne correspond pas ont colorie"
      MaChaine1 = CStr(i)

      Range("A" & i).Select
      With Selection.Interior
      .Pattern = xlSolid
      .PatternColorIndex = xlAutomatic
      .Color = 255
      .TintAndShade = 0
      .PatternTintAndShade = 0
      End With
      End If

      If ((CritereF3) = (CritereF4)) Then
      'MsgBox "les critere des colonne B correspond"
      Else
      'MsgBox "les critere des colonnes B Ne correspond pas ont colorie"
      MaChaine1 = CStr(i)

      Range("B" & i).Select
      With Selection.Interior
      .Pattern = xlSolid
      .PatternColorIndex = xlAutomatic
      .Color = 255
      .TintAndShade = 0
      .PatternTintAndShade = 0
      End With
      End If

      If ((CritereF5) = (CritereF6)) Then
      'MsgBox "les critere des colonne F correspond"
      Else
      'MsgBox "les critere des colonnes F Ne correspond pas ont colorie"
      MaChaine1 = CStr(i)

      Range("F" & i).Select
      With Selection.Interior
      .Pattern = xlSolid
      .PatternColorIndex = xlAutomatic
      .Color = 255
      .TintAndShade = 0
      .PatternTintAndShade = 0
      End With
      End If
      i = i + 1
      Wend
      i = i - 1
      MsgBox ("Il y a " & i & " Ligne dans le fichier Nom fichier")