MACRO Excel Mise en surbrillance une absence de correspondance

Bonjour tout le monde,

je lis attentivement vos échanges très intéressants et j'ai un problème à vous soumettre (dont, je ne parviens pas à trouver la solution). J'espère qu'on y arrivera ensemble.

Dans un tableau excel avec plusieurs onglets, j'aimerai que dans l'onglet "BG N" (voir exemple ci joint:

), une macro mette les comptes de la colonne A en surbrillance s'il y une absence de correspondance dans les autres onglets.

Par exemple, si le compte 512300 n'est pas indiqué dans l'onglet B, la macro mettrait en surbrillance la cellule contenant 512300 en jaune dans l'onglet BG N.

J'ai essayé le code suivant:

Sub Macro()

Dim C As Range, I As Long, Sh As Worksheet, Plage As Range, Ligne As Variant

With Sheets("BG N")

Set Plage = .Range("A2", .Cells(.Rows.Count, 2).End(xlUp))

For Each C In Plage

For I = 3 To 12

Set Sh = Sheets(I)

Ligne = Application.Match(C.Value, Sh.[B:B], 0)

If IsNumeric(Ligne) Then

C.Offset(, 2 + I).Value = Sh.Cells(Ligne, 5).Value

End If

Next I

Next C

End With

End Sub

Merci d'avance pour le temps que vous allez m'accorder.

Bonne journée

bonjour,

une proposition

pas de surbrillance pour les comptes absents, mais indication de l'onglet qui contient le compte

Sub aargh()
    With Sheets("BG N") '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("C1:C" & dl).ClearContents
        For i = 1 To dl
            compte = .Cells(i, 1)
            For Each ws In ThisWorkbook.Worksheets
                If ws.Name Like "? - *" Then
                    Set re = ws.Range("B1:B100").Find(compte, lookat:=xlWhole, LookIn:=xlFormulas) ' recherche du compte dans les 100 premières lignes de la colonne B
                    If Not re Is Nothing Then .Cells(i, 3) = .Cells(i, 3) & " " & ws.Name 'on indique l'onglet dans lequel le compte a été trouvé
                End If
            Next
            Next i
        End With
End Sub

Bonjour h2so4,

merci pour ton message!

J'ai essayé, en affectant la macro sur un bouton, mais rien n'apparaît.

Où est sensé s'afficher l'onglet dans lequel la correspondance a été trouvé?

Merci d'avance

bonjour,

Où est sensé s'afficher l'onglet dans lequel la correspondance a été trouvé?

voir fichier onglet BG N

Ah génial!

C'est très bien, mais est il possible de lui demander également de regarder dans H.

J'ai voulu rajouter la ligne

And Set re = ws.Range("H1:H100").Find(compte, lookat:=xlWhole, LookIn:=xlFormulas)

Mais il y a un message d'erreur.

re-bonjour,

essaie ainsi

Sub aargh()
    With Sheets("BG N") '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("C1:C" & dl).ClearContents
        For i = 1 To dl
            compte = .Cells(i, 1)
            For Each ws In ThisWorkbook.Worksheets
                If ws.Name Like "? - *" Then
                    Set re = ws.Range("B1:B100,H1:H100").Find(compte, lookat:=xlWhole, LookIn:=xlFormulas) ' recherche du compte dans les 100 premières lignes des colonnes B et H
                    If Not re Is Nothing Then .Cells(i, 3) = .Cells(i, 3) & " " & ws.Name 'on indique l'onglet dans lequel le compte a été trouvé
                End If
            Next
            Next i
        End With
End Sub

Ahhhhh, super!!!!

Merci beaucoup!!!

Effectivement ça marche!

Ah, j'ai parlé trop vite.

J'ai voulu enregistrer la Macro sur un fichier XLAM, mais la macro ne marche que sur le classeur excel sur lequel j'ai coller le code.

Comment faire pour que la macro soit duplicable sur tout les classeurs excel?

Merci d'avance

bonjour,

essaie de remplacer

For Each ws In ThisWorkbook.Worksheets

par

For Each ws In activeWorkbook.Worksheets

Bonjour,

ah oui, parfait!

Ca marche!

Merci beaucoup h2so4!!!

Rechercher des sujets similaires à "macro mise surbrillance absence correspondance"