VBA Recherche Valeur Identique

Résolu
Simon404 Messages postés 16 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjour à tous,

Je dois automatiser un fichier excel mais j'ai beaucoup de mal
Dans ce fichier excel, j'ai deux feuilles.
Ma feuille N°1 est celle qui va me servir de base
Je veux comparer pour toutes les lignes de la feuille 1 la colonne 3 et la colonne 5 avec les valeurs qui se trouvent dans ma feuille 2 (colonne 3 et 5 aussi)
Si les valeurs de ma feuille 1, ligne 2 colonne 3 et 5 sont identiques aux valeurs d'une des lignes de ma feuille 2 (colonne 3 et 5 toujours) alors je veux copier la valeur qui se trouve dans le colonne 6 de ma feuille 2 dans la colonne 6 ligne 2 de ma feuille 1 et ainsi de suite
j'ai testé plein de choses et je n'y arrive pas

merci pour votre aide
Simon

9 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    montre-nous ce que tu as essayé, et explique-nous le résultat obtenu.
    0
  2. Simon404 Messages postés 16 Statut Membre
     
    Bonjour,

    Merci pour ta réponse
    je te dépose mon code ci dessous
    j'ai voulu faire un premier check en me disant que si les cellules de la feuilles 2 correspondaient a mes cellules de ma feuilles 1 alors je mettais "OK" et je pourrai attribuer le commentaire correspondants
    Mais en fait, je me suis trompé
    Ma formule permet de comparer uniquement si mes valeurs sont identiques mais ne peut pas reprendre le commentaire associé.
    Je ne sais pas comment faire avec un "IF" pour comparer les 4 valeurs des deux feuilles et mettre le commentaire associé dans la feuille 1.
    Je suis un peu perdu
    Je dois faire ce travail pour 500-600 valeurs

    Merci à toi

    Sub comparaisonFeuillesColonnes()
    
        Dim compteurLigneFeuilleFichierJour
        Dim compteurLigneFeuilleAnalyseMO
        Dim NomFeuille
        Dim NomFeuille2
        Dim contenuCaseFeuille1
        Dim contenuCaseFeuille2
        
        NomFeuille = "ANALYSE"
        NomFeuille2 = "ANALYSES TERMINEES"
        
        colonneAnalyseFeuille1 = 3
        colonneAnalyseFeuille2 = 3
        colonneFC = 10
        ColonneResultat = 7
        
        compteurLigneFeuilleFichierJour = 2
        
        Do
            Sheets(NomFeuille).Select
            contenuCaseFeuille1 = Trim(Cells(compteurLigneFeuilleFichierJour, colonneAnalyseFeuille1).FormulaR1C1)
            
            trouve = 0
            Sheets(NomFeuille2).Select
            compteurLigneFeuilleAnalyseMO = 2
            
            Do
              contenuCaseFeuille2 = Trim(Cells(compteurLigneFeuilleAnalyseMO, colonneAnalyseFeuille2).FormulaR1C1)
              If LCase(contenuCaseFeuille1) = LCase(contenuCaseFeuille2) Then
                trouve = 1
                    Exit Do
                End If
                
                compteurLigneFeuilleAnalyseMO = compteurLigneFeuilleAnalyseMO + 1
                DoEvents
                
            Loop While Len(contenuCaseFeuille2) > 0
            
            If Len(contenuCaseFeuille1) > 0 Then
                If trouve = 1 Then
                    Sheets(NomFeuille).Select
                    Cells(compteurLigneFeuilleFichierJour, ColonneResultat).FormulaR1C1 = "OK"
    
                Else
                    Sheets(NomFeuille).Select
                    Cells(compteurLigneFeuilleFichierJour, ColonneResultat).FormulaR1C1 = "N/A"
                End If
            End If
            
            compteurLigneFeuilleFichierJour = compteurLigneFeuilleFichierJour + 1
            DoEvents
            
            Loop While Len(contenuCaseFeuille1) > 0
            
        colonneAnalyseFeuille1 = 5
        colonneAnalyseFeuille2 = 5
        ColonneResultat = 8
        
        compteurLigneFeuilleFichierJour = 2
        
        Do
            Sheets(NomFeuille).Select
            contenuCaseFeuille1 = Trim(Cells(compteurLigneFeuilleFichierJour, colonneAnalyseFeuille1).FormulaR1C1)
            
            trouve = 0
            Sheets(NomFeuille2).Select
            compteurLigneFeuilleAnalyseMO = 2
            
            Do
              contenuCaseFeuille2 = Trim(Cells(compteurLigneFeuilleAnalyseMO, colonneAnalyseFeuille2).FormulaR1C1)
              If LCase(contenuCaseFeuille1) = LCase(contenuCaseFeuille2) Then
                trouve = 1
                    Exit Do
                End If
                
                compteurLigneFeuilleAnalyseMO = compteurLigneFeuilleAnalyseMO + 1
                DoEvents
                
            Loop While Len(contenuCaseFeuille2) > 0
            
            If Len(contenuCaseFeuille1) > 0 Then
                If trouve = 1 Then
                    Sheets(NomFeuille).Select
                    Cells(compteurLigneFeuilleFichierJour, ColonneResultat).FormulaR1C1 = "OK"
                Else
                    Sheets(NomFeuille).Select
                    Cells(compteurLigneFeuilleFichierJour, ColonneResultat).FormulaR1C1 = "N/A"
                End If
            End If
            
            compteurLigneFeuilleFichierJour = compteurLigneFeuilleFichierJour + 1
            DoEvents
            
            Loop While Len(contenuCaseFeuille1) > 0
            
    
    
    End Sub
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Quand tu partages du code, merci d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

      Si je comprends bien, tout fonctionne bien, à part quelque-chose autour des commentaires.
      Tu n'as pas expliqué ce que tu voulais faire avec les commentaires: les utiliser dans la comparaison, les recopier, ?
      0
      1. Simon404 Messages postés 16 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        oui je veux que les commentaires de ma feuille 2 se recopient sur ma feuille 1 en face des valeurs associées
        par exemple si la celulle 3 et 5 de ma feuille 2 sont identique a la cellule 2 et 5 de ma feuille 1 sur une des lignes alors je souhaite recopier le commentaire associé de la feuille 2 sur la 1
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Simon404 Messages postés 16 Statut Membre
         
        quand tu écris "commentaire", il s'agit bien de "commentaire" que Excel permet d'associer à une cellule?

        où s'agit-il simplement du contenu d'une cellule, que tu considères être un commentaire?

        si tu veux simplement copier le contenu d'une cellule, peut-être:
        Sheets(NomFeuille).Cells(compteurLigneFeuilleFichierJour, 6) = _
              Sheets(NomFeuille2).Cells(compteurLigneFeuilleAnalyseMO, 6)
        
        0
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        tu peux simplifier:
        dim f1 as worksheet, f2 as worksheet
        set f1 = Sheets(NomFeuille)
        set f2 = Sheets(NomFeuille2)
        ' ...
        f1.Cells(compteurLigneFeuilleFichierJour, 6) = f2.Cells(compteurLigneFeuilleAnalyseMO, 6)

        Il est recommandé d'éviter les
        Select
        .
        0
      4. Simon404 Messages postés 16 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        autant pour moi, je considère que le commentaire est le contenu d'une cellule de ma feuille 2 qui correspond a mon commentaire personnel après analyse de mes cellules 3 et 5
        et si les cellules 3 et 5 de la
        0
  3. Simon404 Messages postés 16 Statut Membre
     
    Hello,

    Je pensais avoir répondu mais ma réponse n’apparaît pas
    oui, je me suis mal exprimé dsl. Il s'agit de commentaires personnels que j'ai écrit manuellement dans ma feuille 2.
    L'idée c'est que :

    Si la colonne 2 et 5 de ma feuille 1 (ligne 2 et ainsi de suite)sont identiques à la colonne 2 et 5 feuille 2 (ligne 2 et ainsi desuite) alors le commentaire que j'ai écrit dans ma colonne 6 feuille 2 sur chaque ligne, je souhaite qu'il se recopie automatiquement dans ma feuille 1 en colonne 6 pour chaque valeur correspondante.

    merci et dsl encore du retard
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      as-tu alors testé ma suggestion?
      0
  4. Simon404 Messages postés 16 Statut Membre
     
    oui mais je n'ai pas l'impression que cela fonctionne, rien ne se passe.
    les commentaires que j'ai mis ne se copient pas automatiquement quand les valeurs de mes deux feuilles sont égales.
    je n'ai plus tellement d'idée de mon côté je suis assez débutant sur VBA

    merci de ton aide
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Il existe de nombreuses techniques de vérifier le comportement d'un code.
      Par exemple: https://www.commentcamarche.net/contents/1381-debogage

      Cela devrait t'aider à déterminer à quel endroit le code est déficient.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Simon404 Messages postés 16 Statut Membre
     
    Merci pour la réponse
    Quand je colle ton code dans le mien je n'ai pas d'erreur.
    En revanche, rien ne s'affiche sur ma feuille de calcul excel. J'ai uniquement "OK" et "N/A" qui apparaît.

    Quel code je dois écrire afin que si mes cellules sont égales, le commentaire de la cellule 6 feuille 2 apparaisse en feuille 1 .
    Je n'arrive pas à trouver et le fait de vérifier 4 valeurs simultanément, j'ai beaucoup de mal
    0
  7. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    peut-être:
    Sub comparaisonFeuillesColonnes()
    Dim compteurLigneFeuilleFichierJour
    Dim compteurLigneFeuilleAnalyseMO
    Dim cc2, cc3, cc4, cc5
    Dim f1 As Worksheet, f2 As Worksheet
    
    Set f1 = Sheets("ANALYSE")
    Set f2 = Sheets("ANALYSES TERMINEES")
    compteurLigneFeuilleFichierJour = 2
    Do
        cc2 = LCase(Trim(f1.Cells(compteurLigneFeuilleFichierJour, 2)))
        cc3 = LCase(Trim(f1.Cells(compteurLigneFeuilleFichierJour, 3)))
        cc4 = LCase(Trim(f1.Cells(compteurLigneFeuilleFichierJour, 4)))
        cc5 = LCase(Trim(f1.Cells(compteurLigneFeuilleFichierJour, 5)))
        compteurLigneFeuilleAnalyseMO = 2
        Do
            If cc2 = LCase(Trim(f2.Cells(compteurLigneFeuilleAnalyseMO, 2))) _
                And cc3 = LCase(Trim(f2.Cells(compteurLigneFeuilleAnalyseMO, 3))) _
                And cc4 = LCase(Trim(f2.Cells(compteurLigneFeuilleAnalyseMO, 4))) _
                And cc5 = LCase(Trim(f2.Cells(compteurLigneFeuilleAnalyseMO, 5))) _
                Then
                f1.Cells(compteurLigneFeuilleFichierJour, 6) = f2.Cells(compteurLigneFeuilleAnalyseMO, 6)
            End If
            compteurLigneFeuilleAnalyseMO = compteurLigneFeuilleAnalyseMO + 1
        Loop While Len(f2.Cells(compteurLigneFeuilleAnalyseMO, 2)) > 0
        compteurLigneFeuilleFichierJour = compteurLigneFeuilleFichierJour + 1
        DoEvents
    Loop While Len(Trim(cc2)) > 0
    End Sub
    0
  8. Simon404 Messages postés 16 Statut Membre
     
    Cela fonctionne
    Merci bcp de ton aide !!
    0
  9. Simon404 Messages postés 16 Statut Membre
     
    hello,

    j'ai testé le code pour de nombreuses valeurs et il ne fonctionne pas totalement.
    j'ai des valeurs qui sont identiques en feuilles 2 et 1 et pourtant le commentaire écrit ne se colle pas automatiquement.
    sais-tu pourquoi ?

    merci de ton aide
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu partager un fichier montrant le soucis?
      0
  10. Simon404 Messages postés 16 Statut Membre
     
    les commentaires ne se reprennent uniquement si les cellules 2 et 5 de la feuille 2 sont situées sur la même ligne en feuille 1. Je souhaiterais que le commentaire se reprenne quelque soit la ligne dans laquelle les valeurs se trouvent dans la feuille 1.
    puis-je avoir ton aide stp sur cela ,?

    merci à toi
    0