Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche dans un fichier EXCEL

3 réponses
Avatar
Gandalf
Bonjour,

Je cherche une méthode pour faire le contrôle suivant dans un fichier EXCEL
qui se compose:

De 10 onglets.

Sur les 10 onglets, j'ai 1 onglet avec :
Colonne A Colonne C
14 12
14 13
14 1158
...

L'onglet ci-dessus est un récapitulatif de tous les onglets mais j'aimerais
être sûr qu'il est cohérent.

Je cherche donc à voir si pour mon client 14 j'ai bien effectivement dans
tous les autres onglets 3 lignes avec les montants 12, 13 et 1158.
Cela pour tous mes clients en colonne A.

Avez-vous des idées ?
Merci d'avance.

3 réponses

Avatar
FFO
Salut à toi
Solution macro
Onglet récapilatif : Feuil1
Colonne A référence client
colonne C montant
colonne D en Feuil1 : Onglets divergents

Le code :
Sheets("Feuil1").Activate
Do While Range("A2").Offset(i, 0).Row < Range("A65535").End(xlUp).Offset(1,
0).Row
For j = 1 To Sheets.Count
On Error Resume Next
Ligne = Sheets(j).Range("A1", "A" &
Sheets(j).Range("A65535").End(xlUp).Row).Find(What:=Range("A2").Offset(i, 0),
After:=Range("A1"), LookIn:=xlValues, LookAt _
:=xlPart).Row
If Ligne > 1 And Ligne <> "" Then
If Sheets(j).Range("C" & Ligne) = Range("C2").Offset(i, 0) Then
Trouvé = 1
Else
Lignesuivante = Ligne
For k = 1 To 65535
Lignesuivante = Sheets(j).Range("A1", "A" &
Sheets(j).Range("A65535").End(xlUp).Row).FindNext(After:=Sheets(j).Range("A"
& Lignesuivante)).Row
If Sheets(j).Range("C" & Lignesuivante) = Range("C2").Offset(i, 0) Then
Trouvé = 1
Exit For
End If
If Lignesuivante = Ligne Then
Exit For
End If
k = k + 1
Next
End If
End If
If Trouvé = "" Then
Range("D2").Offset(i, 0) = Range("D2").Offset(i, 0) & Sheets(j).Name & "/"
Else
Trouvé = ""
End If
Ligne = ""
Next
i = i + 1
Loop

Celà devrait te convenir

Dis moi
Avatar
Gandalf
OK merci pour cette macro.

J'ai changé un peu la macro car le montant est en colonne E et j'ai mis en
colonne K les onglets divergents.

En fait ce que je cherche plutôt à faire c'est par exemple mettre en colonne
K un indicateur pour dire si le couple (colonne A, Colonne E) de la feuille 1
existe dans les autres onglets: existe (indicateur = 1), n'existe pas
(indicateur=0). Sachant que la recherche dans les autres onglets doit se
faire uniquement sur certains onglets (ceux qui commencent par CA) et le
couple (colonne A, Colonne E) de la feuille 1 doit correspondre au couple
(Colonne B, Colonne BI) des onglets commençant par CA.

Merci pour toute réponse.

"FFO" wrote:

Salut à toi
Solution macro
Onglet récapilatif : Feuil1
Colonne A référence client
colonne C montant
colonne D en Feuil1 : Onglets divergents

Le code :
Sheets("Feuil1").Activate
Do While Range("A2").Offset(i, 0).Row < Range("A65535").End(xlUp).Offset(1,
0).Row
For j = 1 To Sheets.Count
On Error Resume Next
Ligne = Sheets(j).Range("A1", "A" &
Sheets(j).Range("A65535").End(xlUp).Row).Find(What:=Range("A2").Offset(i, 0),
After:=Range("A1"), LookIn:=xlValues, LookAt _
:=xlPart).Row
If Ligne > 1 And Ligne <> "" Then
If Sheets(j).Range("C" & Ligne) = Range("C2").Offset(i, 0) Then
Trouvé = 1
Else
Lignesuivante = Ligne
For k = 1 To 65535
Lignesuivante = Sheets(j).Range("A1", "A" &
Sheets(j).Range("A65535").End(xlUp).Row).FindNext(After:=Sheets(j).Range("A"
& Lignesuivante)).Row
If Sheets(j).Range("C" & Lignesuivante) = Range("C2").Offset(i, 0) Then
Trouvé = 1
Exit For
End If
If Lignesuivante = Ligne Then
Exit For
End If
k = k + 1
Next
End If
End If
If Trouvé = "" Then
Range("D2").Offset(i, 0) = Range("D2").Offset(i, 0) & Sheets(j).Name & "/"
Else
Trouvé = ""
End If
Ligne = ""
Next
i = i + 1
Loop

Celà devrait te convenir

Dis moi



Avatar
FFO
Rebonjours à toi

"En fait ce que je cherche plutôt à faire c'est par exemple mettre en colonne
K un indicateur pour dire si le couple (colonne A, Colonne E) de la feuille
1
existe dans les autres onglets: existe (indicateur = 1), n'existe pas
(indicateur=0)"

Mon code convient parfaitement !!!!
En mettant ton indicateur en colonne K tu vérifies si le résultat obtenu
correspond en colonne D dans mon code (à modifier éventuellement)

exemple :

Pour un couple avec l'indicateur à 0
en colonne D :
aucune divergence donc couple présent dans les autres Onglets donc incohérence
Tous les Onglets en divergences donc couple absent donc cohérence
Quelques Onglets en divergences donc couple absent pour ceux-ci et présents
pour les autres cohérence incomplète

Idem Pour un couple avec l'indicateur à 1

Tu peux rajouter ces quelques lignes de code pour réaliser cette analyse et
de colorier en rouge par exemple ceux à revoir car incohérent :

En colonne D les résultat et colonne K l'indicateur

For each c in Worksheets("Feuil1").Range("D2", "D" &
Sheets("Feuil1").Range("A65535").End(xlup).Row)
If c = "" And Range("K" & c.Row) = 0 or c <> "" And Range("K" & c.Row) = 1
then
c.interior.colorindex = 3
End If
Next

Celà devrait te convenir

"Sachant que la recherche dans les autres onglets doit se
faire uniquement sur certains onglets (ceux qui commencent par CA) et le
couple (colonne A, Colonne E) de la feuille 1 doit correspondre au couple
(Colonne B, Colonne BI) des onglets commençant par CA."

Peux tu préciser comment déterminer les couples qui sont concernés !!!!

Dans l'attente