Bonjour à tous.
Je cherche un code vba pour rechercher les valeurs entre 1 et 31 qui se trouve sur plusieurs feuilles d'un même classeur.
Pour l'instant, je n'ai que ce code qui me trouve une valeur :
Private Sub Workbook_Open()
Dim n, F As Worksheet, w As Worksheet
n = Sheets("Synthèse").[A1]
n = 30 'valeur recherchée, à adapter-
Set F = Sheets("Synthèse")
Application.ScreenUpdating = False
F.range("A2:I" & F.Rows.Count).Delete xlUp 'RAZ
FoAutoFilterMode = False 'au cas où...
F.r Each w In Worksheets
If w.Name <> F.Name Then
With Intersect(w.[A:I], w.UsedRange.EntireRow)
.Columns(9) = "=""" & w.Name & "!A""&" & "ROW()"
.Columns(9) = .Columns(9).Value 'supprime les formules
.AutoFilter 1, n 'filtre automatique
.Offset(1).Copy F.range("A" & F.Rows.Count).End(xlUp)(2)
w.AutoFilterMode = False
.Columns(9) = ""
End With
End If
Next
F.Columns(9).HorizontalAlignment = xlGeneral
F.Columns(9).AutoFit
F.Activate 'facultatif
Application.ScreenUpdating = True
n = F.range("A" & F.Rows.Count).End(xlUp).Row - 1
J'en profite pour remercier la personne qui m'a trouvé ce code qui fonctionne super bien.
Bonne journée à tous.
Je cherche un code vba pour rechercher les valeurs entre 1 et 31 qui se trouve sur plusieurs feuilles d'un même classeur.
Pour l'instant, je n'ai que ce code qui me trouve une valeur :
Private Sub Workbook_Open()
Dim n, F As Worksheet, w As Worksheet
n = Sheets("Synthèse").[A1]
n = 30 'valeur recherchée, à adapter-
Set F = Sheets("Synthèse")
Application.ScreenUpdating = False
F.range("A2:I" & F.Rows.Count).Delete xlUp 'RAZ
FoAutoFilterMode = False 'au cas où...
F.r Each w In Worksheets
If w.Name <> F.Name Then
With Intersect(w.[A:I], w.UsedRange.EntireRow)
.Columns(9) = "=""" & w.Name & "!A""&" & "ROW()"
.Columns(9) = .Columns(9).Value 'supprime les formules
.AutoFilter 1, n 'filtre automatique
.Offset(1).Copy F.range("A" & F.Rows.Count).End(xlUp)(2)
w.AutoFilterMode = False
.Columns(9) = ""
End With
End If
Next
F.Columns(9).HorizontalAlignment = xlGeneral
F.Columns(9).AutoFit
F.Activate 'facultatif
Application.ScreenUpdating = True
n = F.range("A" & F.Rows.Count).End(xlUp).Row - 1
J'en profite pour remercier la personne qui m'a trouvé ce code qui fonctionne super bien.
Bonne journée à tous.