Bonjour
Je fais encore appel à vous car après beaucoup de recherches et d'essais, j'arriva pas à faire ce que je veux à ma macro.
J'ai des données sur plusieurs fichiers, même nom de feuille (nom de semaines type S25), dans un même dossier.
La macro doit :
Dans un fichier de synthèse (créer la feuille de semaine S23 (cette partie c'est ok))
- récupérer les lignes A2 à D20 de tous les fichiers les unes après les autres
- supprimer les lignes dont la colonne A est vide
Je vous donne ma macro en entier, en sachant que la création de la nouvelle feuille est ok.
Sub Nvlle_Feuille()
Dim BE As Variant
Dim I As Integer
Dim sRep As String
Dim sFichier As String
ici:
BE = Application.InputBox("Entrez le nom du nouvel onglet, type S+n°semaine ex. S25", "NOM", Type:=2)
If BE = False Or BE = "" Then Exit Sub
For I = 1 To Sheets.Count
If LCase(BE) = LCase(Sheets(I).Name) Then
MsgBox "Un onglet portant ce nom existe déjà, veuillez recommencer !"
GoTo ici
End If
Next I
ActiveSheet.Unprotect ("joker")
Sheets(1).Copy Before:=Sheets(1)
ActiveSheet.Name = BE
With Range("F3:AL50").SpecialCells(xlCellTypeVisible)
.ClearContents: .Interior.Color = xlColorIndexNone
End With
Range("AY3:BC50").ClearContents
Range("F2") = Range("F2") + 7
Application.ScreenUpdating = False
sRep = "C:\Users\HP\OneDrive\temporaire\TEST" 'Boîte de dialogue pour choisir répertoire ChoisirRepertoire & "\"
sFichier = Dir(sRep)
Do While sFichier <> ""
Workbooks.Open sRep & sFichier 'ouvrir le fichier
' Ici on veut récupèrer les valeurs des cellules A2 à D20 des feuilles portant le même nom que la feuille crée et les ranger à partir de A2 (ça ne copie pas les données)
ThisWorkbook.Sheets(BE).Range("A220").Copy.Value = ActiveWorkbook.Sheets(BE).Range("A2")
ActiveWorkbook.Close savechanges:=True
sFichier = Dir 'trouve le prochain fichier
Loop
Application.ScreenUpdating = True
'Ici on veut supprimer toutes les lignes vides, (mais ça fonctionne pas)
Range("A1").SpecialCells(xlCellTypeBlanks).EtireRow.Delete
ActiveSheet.Protect ("joker")
End Sub
Je vous remercie tous du temps que vous m'accorderez.
Je fais encore appel à vous car après beaucoup de recherches et d'essais, j'arriva pas à faire ce que je veux à ma macro.
J'ai des données sur plusieurs fichiers, même nom de feuille (nom de semaines type S25), dans un même dossier.
La macro doit :
Dans un fichier de synthèse (créer la feuille de semaine S23 (cette partie c'est ok))
- récupérer les lignes A2 à D20 de tous les fichiers les unes après les autres
- supprimer les lignes dont la colonne A est vide
Je vous donne ma macro en entier, en sachant que la création de la nouvelle feuille est ok.
Sub Nvlle_Feuille()
Dim BE As Variant
Dim I As Integer
Dim sRep As String
Dim sFichier As String
ici:
BE = Application.InputBox("Entrez le nom du nouvel onglet, type S+n°semaine ex. S25", "NOM", Type:=2)
If BE = False Or BE = "" Then Exit Sub
For I = 1 To Sheets.Count
If LCase(BE) = LCase(Sheets(I).Name) Then
MsgBox "Un onglet portant ce nom existe déjà, veuillez recommencer !"
GoTo ici
End If
Next I
ActiveSheet.Unprotect ("joker")
Sheets(1).Copy Before:=Sheets(1)
ActiveSheet.Name = BE
With Range("F3:AL50").SpecialCells(xlCellTypeVisible)
.ClearContents: .Interior.Color = xlColorIndexNone
End With
Range("AY3:BC50").ClearContents
Range("F2") = Range("F2") + 7
Application.ScreenUpdating = False
sRep = "C:\Users\HP\OneDrive\temporaire\TEST" 'Boîte de dialogue pour choisir répertoire ChoisirRepertoire & "\"
sFichier = Dir(sRep)
Do While sFichier <> ""
Workbooks.Open sRep & sFichier 'ouvrir le fichier
' Ici on veut récupèrer les valeurs des cellules A2 à D20 des feuilles portant le même nom que la feuille crée et les ranger à partir de A2 (ça ne copie pas les données)
ThisWorkbook.Sheets(BE).Range("A220").Copy.Value = ActiveWorkbook.Sheets(BE).Range("A2")
ActiveWorkbook.Close savechanges:=True
sFichier = Dir 'trouve le prochain fichier
Loop
Application.ScreenUpdating = True
'Ici on veut supprimer toutes les lignes vides, (mais ça fonctionne pas)
Range("A1").SpecialCells(xlCellTypeBlanks).EtireRow.Delete
ActiveSheet.Protect ("joker")
End Sub
Je vous remercie tous du temps que vous m'accorderez.
Pièces jointes
Dernière édition: