Bonsoir Minato,
pour mettre du code VBA dans ton post, tu peux utiliser la balise « Inline » (comme tu l'as déjà fait) quand ça dépasse pas une ligne de texte ; mais sinon, en particulier pour un code VBA complet, utilise cette balise « code » : ; ça s'présente alors comme suit :
Sub pdp()
Dim dl2 As Long, dl As Long, i As Long
dl2 = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row + 1
With Worksheets("Page de garde")
dl = .Cells(Rows.Count, "A").End(xlUp).Row: If dl > 107 Then dl = 107
For i = 58 To dl
If .Range("A" & i) <> "" And .Range("AK" & i) = "X" Then
.Range("A" & i & ":AJ" & i).Copy Worksheets("Feuil1").Range("A" & dl2)
dl2 = dl2 + 1
End If
Next i
End With
End Sub
j'ai indenté le code VBA ; attention aux types : pour les 3 variables de numéros de ligne, utilise Long au lieu d'Integer
j'ai aussi réécrit ton code VBA en l'optimisant ; note que Worksheets("Page de garde") apparaît une seule fois !
alors ne remets pas la ligne dl = avant la ligne dl2 =, donc ne la remets pas avant le With !
Worksheets("Feuil1") apparaît une fois pour le calcul de dl2, et une autre fois pour la destination du collage ; comme cette destination est en tant que 1er argument du .Copy, c'est donc un collage des cellules entières, donc y compris leur format ; pourtant, tu as écrit : « Par contre la mise en page de la copie ne se fait pas correctement »
de quoi s'agit-il exactement ? la hauteur des lignes ? la largeur des colonnes ? autre ? donne la liste complète de tout c'qui manque ! mais normalement, du fait qu'ça copie tous les formats de cellule, ça fait qu'ça copie déjà tout ceci :
* le « format de nombre » : Standard, Nombre, Date, Heure, Texte, ou autre (et même un format personnalisé)
* l'« alignement horizontal » : standard, gauche, centré, droite... ; l'« alignement vertical » : bas, centré, haut...
* la « police de caractères » : nom, taille, gras, italique, souligné, barré, exposant, indice, couleur
* les « bordures » : tous les traits (y compris si tu as utilisé des diagonales)
* le « remplissage » : couleur d'arrière-plan (+ motif et texture éventuels)
* la « protection » : cellule verrouillée / masquée
c'est déjà beaucoup, mais bien sûr, ça concerne uniquement les cellules copiées / collées ; pour tout le reste, tu dois envisager l'utilisation d'une feuille modèle .xltx (sans macros) ; tu auras donc ton classeur .xlsm (avec macros), dans lequel tu ajouteras une feuille modèle .xltx personnalisée ; cela chaque fois que tu auras besoin d'une nouvelle feuille modèle.
regarde l'aide Excel sur la création d'un modèle.
dhany