Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Faire une boucle VBA pour trouver la même information plusieurs fois dans plusieurs feuilles

plectrude 01

XLDnaute Nouveau
Bonjour,
Avec l'aide du forum j'ai fait cette macro pour retrouver le mot "Retard" dans toutes les feuilles d'un classeur (à l'exception de la feuille de synthèse où seront mises toutes les informations en retard), mais je butte sur le fait qu'il faut que je puisse avoir autant de lignes qu'il y a d'alertes, et ce pour chaque feuille.

Voici la macro, et le tableau
For Each ws In ActiveWorkbook.Sheets 'pour chaque feuille du classeur actif
If ws.Name <> "Synthèse" Then 'on exclu la feuille Synthèse du traitement...
With ws 'avec la feuille en cours de traitement
'dans la feuille synthèse
Synt.Range("A" & Synt.Rows.Count).End(xlUp).Offset(1, 0) = ws.Name 'on colle le nom de l'onglet à la première ligne vide (en partant du bas) dans la colonne A
'on cherche le mot "Retard" dans la colonne I de la feuille en cours de traitement
Set trouve = .Range("I:I").Find("Retard", lookat:=xlWhole)
If Not trouve Is Nothing Then 'si on l'a trouvé==> on part de la colonne B à la ligne du mot arbre: on prend 6 colonnes==> on colle à la fin de la synt en col B
.Range("B" & trouve.Row).Resize(1, 6).Copy Destination:=Synt.Range("B" & Synt.Rows.Count).End(xlUp).Offset(1, 0)
End If
End With
End If
Next ws

Merci d'avance de votre aide, toujours précieuse.
J'en profite pour souhaiter à chacun.e une très belle année 2022.
 

Pièces jointes

  • Trame.xlsm
    28.3 KB · Affichages: 6

plectrude 01

XLDnaute Nouveau
Bonjour @plectrude 01


Je te propose ce fichier en fonction de ce que j'ai compris car la phrase :

n'est pas très compréhensible pour moi....

*Merci de ton retour

@Phil69970
Bonjour Phil66970,
Ahahah forcément, c'est ce qui reste du code que j'ai pris pour créer ma macro ! Si tu n'as pas compris c'est bon signe
J'ai regardé, c'est top ! Limpide ! Merci beaucoup. En revanche, tu l'as mise dans une feuille et non dans un module, peux-tu m'expliquer pourquoi ?
Merci d'avance
 

Phil69970

XLDnaute Barbatruc
Bonjour @plectrude 01

En revanche, tu l'as mise dans une feuille et non dans un module, peux-tu m'expliquer pourquoi ?
Si tu regarde bien le code la macro se déclenche automatiquement à chaque activavation de la feuille synthése
Private Sub Worksheet_Activate()
sans bouton ou intervention de ta part.
C'est le choix que j'ai fait mais j'aurais u en faire un autre en mettant un bouton par exemple qui exécute la macro sur le clic de ce bouton

*Précision:
Attention à l'orthographe du mot retard pour excel "Retard" est différend de "retard"
Si tu veux contourner ce problème il faut rajouter ceci dans le début du code

Option Explicit
Option Compare Text

Private Sub Worksheet_Activate()

@Phil69970
 

plectrude 01

XLDnaute Nouveau
Merci beaucoup pour ces précisions, c'est encore mieux que ce que j'espérais ! Pour le mot Retard, il est généré automatiquement par une simple formule SI, comme ça je suis sûre de l'orthographe. Mais merci d'attirer mon attention là-dessus.
Merci à toute l'équipe, vous êtes au top !!!
 

Discussions similaires

Réponses
7
Affichages
528
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…