XL 2016 Macro à faire sur plusieurs onglets

  • Initiateur de la discussion Initiateur de la discussion Claudy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Claudy

XLDnaute Accro
Bonsoir,
Un classeur, des onglets de janvier à décembre...
J'ai la macro ci dessous qui fonctionne très bien sur un mois:
Sub Détail()
Dim zaza As String
Dim i As Double
Dim derlig As Double
Application.EnableEvents = False
Range("O15:Q125").ClearContents
zaza = InputBox("Entrer un mot à détailler le montant", , "SSD")

Range("N10") = UCase(zaza)

derlig = Range("I1000").End(xlUp).Row
'MsgBox (derlig)
i = 0
nb = 0
'Range("O" & 15 + i).Select
'Exit Sub
For Each cel In Range("I4:I" & derlig)

If UCase(cel.Value) Like "*" & Range("N10").Value & "*" Then

Range("O" & 15 + i) = cel.Text
Range("P" & 15 + i) = cel.Offset(0, -2).Value
Range("Q" & 15 + i) = "Lig " & cel.Row() & "/" & cel.Offset(0, 1).Text

i = i + 1
nb = nb + 1
End If

Next
Range("M11") = UCase(zaza) & " // Trouvé: " & nb & " lig.."
Range("P15😛125").Select

Application.EnableEvents = True
End Sub

Comment adapter cette macro pour qu'elle travaille sur les douze mois/onglets précédents?
Merci d'avance,
Claudy
 
Bonsoir le fil, Claudy

Claudy
Voir ta macro ainsi modifiée
VB:
Sub Détail()
Dim zaza As String
Dim i As Double
Dim derlig As Double
Dim ws As Worksheet
Application.EnableEvents = False
zaza = InputBox("Entrer un mot à détailler le montant", , "SSD")
For Each ws In Worksheets
ws.Range("O15:Q125").ClearContents
ws.Range("N10") = UCase(zaza)
derlig = Range("I1000").End(xlUp).Row
i = 0
nb = 0
For Each cel In ws.Range("I4:I" & derlig)
If UCase(cel.Value) Like "*" & Range("N10").Value & "*" Then
ws.Range("O" & 15 + i) = cel.Text
ws.Range("P" & 15 + i) = cel.Offset(0, -2).Value
ws.Range("Q" & 15 + i) = "Lig " & cel.Row() & "/" & cel.Offset(0, 1).Text
i = i + 1
nb = nb + 1
End If
Next
ws.Range("M11") = UCase(zaza) & " // Trouvé: " & nb & " lig.."
Next ws
Application.EnableEvents = True
End Sub

PS: CTRL+F fait trés bien le job 😉 (sans macro et sans boucle)
( Choisir Classeur dans la rubrique Dans puis cliquer sur Rechercher tout )
 
Bonjour Stape1600
merci pour le code , je vais adapter à mes besoins.
Pour le Ctrl+ F, je connaissais et j'utilise tous les jours dans des classeurs avec des milliers de lignes et dizaines de colonnes, c'est vraiment très très pratique.
Bonne journée,
Claudy
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
235
Réponses
7
Affichages
619
Réponses
4
Affichages
243
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Retour