Clairette53
XLDnaute Nouveau
Bonjour,
Je viens vers vous car j’ai un souci avec un fichier Excel que je viens de passer sous l'option calendrier 1904 (car sinon mes formules de calcules sur les heures ne fonctionnaient pas comme je voulais). Mais depuis que j'ai fait cette manip, ma macro ne fonctionne plus correctement...
J'avais une macro qui faisait le récap de dates de plusieurs onglets dans un seul onglet. Seulement depuis que j'ai coché l'option calendrier 1904, les dates reportées dans l'onglet récap ne sont pas les bonnes (il s’agit des dates en 2025 au lieu de 2021 et avec toujours un jour de plus : par exemple 20/02/2025 au lieu de 19/02/2021).
La macro que j'utilise est la suivante (elle n'est pas de moi, je ne suis pas très douée en macro !) :
Sub recapheuressup()
'Efface les lignes 2 à 100 des col A à G
Sheets("récap HS").Range("A2:G100").ClearContents
Dim dl As Long
x = 1
'Boucle sur les feuilles depuis la 3ème (Les 2 premières sont les 2 feuilles Recap) jusqu'à la dernière
For g = 3 To Sheets.Count
'dernière ligne remplie en 1ere colonne de la feuille
dl = Sheets(g).Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
'si cette dernière ligne est >6 (donc après lea ligne des intitulés)
If dl > 6 Then
' on boucle sur les lignes de la feuille depuis la 7ème jusqu'à la dernière remplie
For n = 7 To dl
' on incrémente à chaque fois x de 1
x = x + 1
' Dans la feuille récap on copie en ligne X dans les colonnes adéquates les données de la feuille salarié
With Sheets("récap HS")
.Range("A" & x) = Sheets(g).Range("B3")
.Range("B" & x) = Sheets(g).Range("C3")
.Range("C" & x) = Sheets(g).Range("A" & n)
.Range("D" & x) = Sheets(g).Range("C" & n)
.Range("E" & x) = Sheets(g).Range("D" & n)
.Range("F" & x) = Sheets(g).Range("E" & n)
.Range("G" & x) = Sheets(g).Range("B" & n)
End With
Next n
End If
Next g
' une fois toutes les feuilles reportées,tri de la feuille récap par ordre croissant de dates et de noms prénoms
dl = Sheets("récap HS").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
Sheets("récap HS").Columns("A:G").Select
ActiveWorkbook.Worksheets("récap HS").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("récap HS").Sort.SortFields.Add Key:=Range("C2:C" & dl _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("récap HS").Sort.SortFields.Add Key:=Range("A2:A" & dl _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("récap HS").Sort.SortFields.Add Key:=Range("B2:B" & dl _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("récap HS").Sort
.SetRange Range("A1:G" & dl)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Est-ce que quelqu'un sait comment résoudre ce problème ?
Merci à vous
Je viens vers vous car j’ai un souci avec un fichier Excel que je viens de passer sous l'option calendrier 1904 (car sinon mes formules de calcules sur les heures ne fonctionnaient pas comme je voulais). Mais depuis que j'ai fait cette manip, ma macro ne fonctionne plus correctement...
J'avais une macro qui faisait le récap de dates de plusieurs onglets dans un seul onglet. Seulement depuis que j'ai coché l'option calendrier 1904, les dates reportées dans l'onglet récap ne sont pas les bonnes (il s’agit des dates en 2025 au lieu de 2021 et avec toujours un jour de plus : par exemple 20/02/2025 au lieu de 19/02/2021).
La macro que j'utilise est la suivante (elle n'est pas de moi, je ne suis pas très douée en macro !) :
Sub recapheuressup()
'Efface les lignes 2 à 100 des col A à G
Sheets("récap HS").Range("A2:G100").ClearContents
Dim dl As Long
x = 1
'Boucle sur les feuilles depuis la 3ème (Les 2 premières sont les 2 feuilles Recap) jusqu'à la dernière
For g = 3 To Sheets.Count
'dernière ligne remplie en 1ere colonne de la feuille
dl = Sheets(g).Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
'si cette dernière ligne est >6 (donc après lea ligne des intitulés)
If dl > 6 Then
' on boucle sur les lignes de la feuille depuis la 7ème jusqu'à la dernière remplie
For n = 7 To dl
' on incrémente à chaque fois x de 1
x = x + 1
' Dans la feuille récap on copie en ligne X dans les colonnes adéquates les données de la feuille salarié
With Sheets("récap HS")
.Range("A" & x) = Sheets(g).Range("B3")
.Range("B" & x) = Sheets(g).Range("C3")
.Range("C" & x) = Sheets(g).Range("A" & n)
.Range("D" & x) = Sheets(g).Range("C" & n)
.Range("E" & x) = Sheets(g).Range("D" & n)
.Range("F" & x) = Sheets(g).Range("E" & n)
.Range("G" & x) = Sheets(g).Range("B" & n)
End With
Next n
End If
Next g
' une fois toutes les feuilles reportées,tri de la feuille récap par ordre croissant de dates et de noms prénoms
dl = Sheets("récap HS").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
Sheets("récap HS").Columns("A:G").Select
ActiveWorkbook.Worksheets("récap HS").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("récap HS").Sort.SortFields.Add Key:=Range("C2:C" & dl _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("récap HS").Sort.SortFields.Add Key:=Range("A2:A" & dl _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("récap HS").Sort.SortFields.Add Key:=Range("B2:B" & dl _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("récap HS").Sort
.SetRange Range("A1:G" & dl)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Est-ce que quelqu'un sait comment résoudre ce problème ?
Merci à vous