VBA Recherche Valeur Identique

Résolu/Fermé
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023 - 3 févr. 2022 à 17:24
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 - 10 févr. 2022 à 17:53
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
A voir également:

9 réponses

yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 Ambassadeur 1 568
3 févr. 2022 à 20:38
bonjour,
montre-nous ce que tu as essayé, et explique-nous le résultat obtenu.
0
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023
Modifié le 7 févr. 2022 à 15:20
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
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 1 568
4 févr. 2022 à 12:58
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
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023 > yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025
4 févr. 2022 à 14:18
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
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 1 568 > Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023
4 févr. 2022 à 15:05
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
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 1 568 > yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025
4 févr. 2022 à 15:09
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
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023 > yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025
4 févr. 2022 à 15:13
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
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023
7 févr. 2022 à 17:11
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
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 1 568
7 févr. 2022 à 22:15
as-tu alors testé ma suggestion?
0
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023
8 févr. 2022 à 10:34
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
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 1 568
8 févr. 2022 à 11:27
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023
8 févr. 2022 à 14:43
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
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 Ambassadeur 1 568
8 févr. 2022 à 15:57
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
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023
8 févr. 2022 à 17:02
Cela fonctionne
Merci bcp de ton aide !!
0
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023
10 févr. 2022 à 16:27
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
yg_be Messages postés 23477 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 mars 2025 1 568
10 févr. 2022 à 17:53
peux-tu partager un fichier montrant le soucis?
0
Simon404 Messages postés 12 Date d'inscription jeudi 3 février 2022 Statut Membre Dernière intervention 14 septembre 2023
10 févr. 2022 à 16:30
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