Appliquer une macro à toutes les feuilles

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 !

thib1987

XLDnaute Nouveau
Bonjour,

J'ai le code suivant qui a pour but de combler les dates manquantes par les mêmes informations que le jour d'avant. J'aimerai appliquer cette macro à toutes les feuilles en même temps. Est-ce possible ? Pour le moment elle s'applique à la feuille BGBM.

Sub insertMissingDate()
Dim wks As Worksheet
Dim lastRow As Long
Dim i As Integer
Dim cel As Range

Set wks = Worksheets("BGBM")
lastRow = wks.Range("C2").End(xlDown).Row

'screening de haut en bas
For i = lastRow To 3 Step -1
curcell = wks.Cells(i, 3).Value
prevcell = wks.Cells(i - 1, 3).Value

'boucle si plusieurs cellules vides
Do Until curcell - 1 = prevcell Or curcell = prevcell
'Insert new row
wks.Rows(i).Insert xlShiftDown

'Insertion de la nouvelle date
curcell = wks.Cells(i + 1, 3) - 1
wks.Cells(i, 3).Value = curcell
Loop
Next i

With wks
Application.ScreenUpdating = False
'boucle sur toutes les cellules des colonnes A et D
For Each cel In Range("A1😀" & Range("B" & wks.Rows.Count).End(xlUp).Row)
'si la cellule est vide, elle prend la valeur de la cellule du dessus
If cel.Value = "" Then cel.Value = cel.Offset(-1, 0).Value
Next cel 'prochaine cellule des colonnes A et D
End With

End Sub


Merci pour votre retour.

Thibault
 
bonjour
Peut être comme cela ( n'ayant pas de fichier pour tester🙁)

Code:
Sub insertMissingDate()
Dim wks As Worksheet
Dim lastRow As Long
Dim i As Integer
Dim cel As Range
Dim I as byte
For I=1 to Worksheets.count
Set wks = Worksheets(I)
lastRow = wks.Range("C2").End(xlDown).Row

'screening de haut en bas
For i = lastRow To 3 Step -1
curcell = wks.Cells(i, 3).Value
prevcell = wks.Cells(i - 1, 3).Value

'boucle si plusieurs cellules vides
Do Until curcell - 1 = prevcell Or curcell = prevcell
'Insert new row
wks.Rows(i).Insert xlShiftDown

'Insertion de la nouvelle date
curcell = wks.Cells(i + 1, 3) - 1
wks.Cells(i, 3).Value = curcell
Loop
Next i

With wks
Application.ScreenUpdating = False
'boucle sur toutes les cellules des colonnes A et D
For Each cel In Range("A1:D" & Range("B" & wks.Rows.Count).End(xlUp).Row)
'si la cellule est vide, elle prend la valeur de la cellule du dessus
If cel.Value = "" Then cel.Value = cel.Offset(-1, 0).Value
Next cel 'prochaine cellule des colonnes A et D
End With
next
End Sub
 
Je voulais appliquer la macro à partir de la deuxième sheet B= 2 to workshets.count pour pouvoir avoir une page de garde et un bouton pour la macro. A ce moment la deuxième partie de la macro ne fonctionne plus.

Quelque chose à changer dans cette partie là pour que la macro ne s'applique qu'à partir de la deuxième sheet ?

Merci,

Thibault
 
- 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
232
Réponses
4
Affichages
177
Retour