Correspondance Entre deux onglets

Bonjour la commu,

je souhaite faire une macro qui indique si les valeurs dans la colonne A de mon onglet "BA SITU" sont présentes dans mon onglet 2022, à la colonne Q de "BA SITU".

J'ai fait un premier essaie qui ne fonctionne pas mais je n'arrive pas à trouver la solution:

Sub ComptesBP()
With Sheets("BA SITU") 'liste des comptes dont on doit vérifier la présence
dl = .Cells(Rows.Count, 1).End(xlUp).Row 'dernière ligne contenant un compte
.Range("Q1:Q" & dl).ClearContents 'pour effacer les informations précédentes
For i = 1 To dl
compte = .Cells(i, 1).ActiveWorkbook.Sheets("2022")

Set re = ws.Range("A1:A1000, A1:A1000").Find(compte, LookAt:=xlWhole, LookIn:=xlFormulas) ' recherche du compte dans les 1000 premières lignes de la colonne A

If Not re Is Nothing Then .Cells(i, 17) = .Cells(i, 17) & " " & ws.Name 'on indique l'onglet dans lequel le compte a été trouvé
Next
Next i
End With
End Sub

Est ce qu'une âme charitable pourrait m'aider?

Merci d'avance

Grégoire

Bonjour,

Merci d'utiliser la mise en forme du code proposée par le forum.

mefcode

L'utilisation d'une macro est-elle nécessaire ? L'opération est aussi réalisable à l'aide de simples fonctions NB.SI.

Concernant le code :
- Cette instruction n'a aucun sens : compte = .Cells(i, 1).ActiveWorkbook.Sheets("2022")
- Le compte provient de l'onglet 2022 ou BA SITU ?
- La variable ws apparait comme par magie, n'étant définie nulle part, à quoi correspond-t-elle ?
- Range("A1:A1000, A1:A1000") pourquoi 2 fois la même plage ??
- 2 Next pour une seule boucle For...

Salut Pedro,

merci pour beaucoup pour ton retour rapide!

Je préfère une macro car j'ai peur que l'utilisateur final du document ne vienne toucher des choses sans m'avertir.

J'ai retouché un peu macro entre temps et, désolé j'ai manqué de précision dans ma description.

Le but de cette macro est d'afficher dans la colonne N de l'onglet "BA SITU", les onglets dans lesquels se trouvent les comptes présent dans la colonne C de l'onglet "BA SITU". Si ce n'est pas claire, je peux charger un modèle.

Pour ce qui est de la variable ws, j'ai repris le code d'une macro similaire, mais je n'ai pas trouvé tellement d'infos sur les sites pour m'aider.

J'avoue que je ne connais pas trop son périmètre ni même ses propriétés.

Voici mon nouvel essai, qui ne marche toujours pas.

Merci d'avance

Sub CadrageBP()
Dim i As Integer
With Sheets("BA SITU") 'liste des comptes dont on doit vérifier la présence
        dl = .Cells(Rows.Count, 3).End(xlUp).Row 'dernière ligne contenant un compte de la colonne 3
        .Range("N1:N" & dl).ClearContents 'supprime les infos déjà présentes dans la colonne N
        For i = 1 To dl
            compte = .Cells(i, 3)
            For Each ws In ActiveWorkbook.Worksheets
                If ws.Name Like "? - *" Then
                    Set re = ws.Range("A1:A100").Find(compte, LookAt:=xlWhole, LookIn:=xlFormulas) ' recherche du compte dans les 100 premières lignes de la colonne A

                    If Not re Is Nothing Then .Cells(i, 14) = .Cells(i, 14) & " " & ws.Name 'on indique l'onglet dans lequel le compte a été trouvé en colonne N
                End If
            Next
            Next i
        End With
End Sub
Rechercher des sujets similaires à "correspondance entre deux onglets"