Changer plusieurs cells dans plusieurs feuilles définis
Bonjour,
J'ai un fichier qui contient plusieurs feuilles.
Sur les feuilles suivantes : "OE 100-D1", "STE USI 100-K", "ACH", "EDU-S", "EM-S KV", "EM-S T", "EM-S P", "EXM" ; il y a la même mise en forme, des cellules vides à remplir.
Je souhaite remplir plusieurs cellules sur chacune de ses feuilles à partir d'une feuille "Form_Insp" contenant la même mise en forme.
Pour se faire, j'utilise la macro ci-dessous :
Sub EnTête()
Dim Feuille As Worksheet
For Each Feuille In ThisWorkbook.Worksheets
Select Case Feuille.Name
Case "OE 100-D1", "STE USI 100-K", "ACH", "EDU-S", "EM-S KV", "EM-S T", "EM-S P", "EXM"
Case Else ' feuille à traiter
Feuille.Range("J6") = ThisWorkbook.Worksheets("Form_Insp").Range("J6")
Feuille.Range("D11") = ThisWorkbook.Worksheets("Form_Insp").Range("D11")
Feuille.Range("D12") = ThisWorkbook.Worksheets("Form_Insp").Range("D12")
Feuille.Range("G14") = ThisWorkbook.Worksheets("Form_Insp").Range("G14")
Feuille.Range("U14") = ThisWorkbook.Worksheets("Form_Insp").Range("U14")
Feuille.Range("F18") = ThisWorkbook.Worksheets("Form_Insp").Range("E18")
Feuille.Range("R20") = ThisWorkbook.Worksheets("Form_Insp").Range("R18")
Feuille.Range("X20") = ThisWorkbook.Worksheets("Form_Insp").Range("X18")
Feuille.Range("V7") = ThisWorkbook.Worksheets("Form_Insp").Range("N8")
'Matériaux
Feuille.Range("B23") = ThisWorkbook.Worksheets("Form_Insp").Range("B23")
Feuille.Range("B24") = ThisWorkbook.Worksheets("Form_Insp").Range("B24")
'Type
Feuille.Range("D23") = ThisWorkbook.Worksheets("Form_Insp").Range("D23")
Feuille.Range("D24") = ThisWorkbook.Worksheets("Form_Insp").Range("D24")
'Ep
Feuille.Range("I23") = ThisWorkbook.Worksheets("Form_Insp").Range("I23")
Feuille.Range("I24") = ThisWorkbook.Worksheets("Form_Insp").Range("I24")
'mm
Feuille.Range("K23") = ThisWorkbook.Worksheets("Form_Insp").Range("K23")
Feuille.Range("K24") = ThisWorkbook.Worksheets("Form_Insp").Range("K24")
'Matière
Feuille.Range("M23") = ThisWorkbook.Worksheets("Form_Insp").Range("M23")
Feuille.Range("M24") = ThisWorkbook.Worksheets("Form_Insp").Range("M24")
'Norme matière
Feuille.Range("P23") = ThisWorkbook.Worksheets("Form_Insp").Range("P23")
Feuille.Range("P24") = ThisWorkbook.Worksheets("Form_Insp").Range("P24")
'sous-groupe
Feuille.Range("T23") = ThisWorkbook.Worksheets("Form_Insp").Range("T23")
Feuille.Range("T24") = ThisWorkbook.Worksheets("Form_Insp").Range("T24")
'Matériaux d'apport
Feuille.Range("W23") = ThisWorkbook.Worksheets("Form_Insp").Range("W23")
End Select
Next Feuille
End SubCelle-ci se lance sans erreur mais toutes les cellules désignées restent vides sur chacune des feuilles désignées.
Une idée ?
Merci pour votre aide !
Bonjour
Dans votre boucle, le code ne complétera que les feuilles différentes des feuilles nommées "OE 100-D1", "STE USI 100-K", "ACH", "EDU-S", "EM-S KV", "EM-S T", "EM-S P", "EXM"
Correct ? Si non, enlevez simplement le CASE ELSE qui ne sert à rien
edit : Vous pouvez essayer votre code comme ceci plutôt
Sub EnTête()
Dim feuille()
Dim i As Byte
feuille = Array("OE 100-D1", "STE USI 100-K", "ACH", "EDU-S", "EM-S KV", "EM-S T", "EM-S P", "EXM")
With ThisWorkbook.Worksheets("Form_Insp")
For i = 0 To UBound(feuille)
Sheets(feuille(i)).Range("J6") = .Range("J6")
Sheets(feuille(i)).Range("D11") = .Range("D11")
Sheets(feuille(i)).Range("D12") = .Range("D12")
Sheets(feuille(i)).Range("G14") = .Range("G14")
Sheets(feuille(i)).Range("U14") = .Range("U14")
Sheets(feuille(i)).Range("F18") = .Range("E18")
Sheets(feuille(i)).Range("R20") = .Range("R18")
Sheets(feuille(i)).Range("X20") = .Range("X18")
Sheets(feuille(i)).Range("V7") = .Range("N8")
'Matériaux
Sheets(feuille(i)).Range("B23") = .Range("B23")
Sheets(feuille(i)).Range("B24") = .Range("B24")
'Type
Sheets(feuille(i)).Range("D23") = .Range("D23")
Sheets(feuille(i)).Range("D24") = .Range("D24")
'Ep
Sheets(feuille(i)).Range("I23") = .Range("I23")
Sheets(feuille(i)).Range("I24") = .Range("I24")
'mm
Sheets(feuille(i)).Range("K23") = .Range("K23")
Sheets(feuille(i)).Range("K24") = .Range("K24")
'Matière
Sheets(feuille(i)).Range("M23") = .Range("M23")
Sheets(feuille(i)).Range("M24") = .Range("M24")
'Norme matière
Sheets(feuille(i)).Range("P23") = .Range("P23")
Sheets(feuille(i)).Range("P24") = .Range("P24")
'sous-groupe
Sheets(feuille(i)).Range("T23") = .Range("T23")
Sheets(feuille(i)).Range("T24") = .Range("T24")
'Matériaux d'apport
Sheets(feuille(i)).Range("W23") = .Range("W23")
Next i
End With
End SubSi ok pensez à -->
Crdlt
Edit : modifié code
Bonsoir Dan !
Effectivement, je viens de m'en rendre compte sur les autres feuilles qui étaient cachées...
Merci !
Bonjour Dan,
Je ne sais pas ce qu'il s'est passé depuis hier, mais après avoir lancé la macro (qui fonctionnait très bien!) maintenant j'ai un message d'erreur : "erreur 424" Objet requis" (je n'ai supprimé aucune feuille).
L'erreur se produit à "feuille(i).Range("J6") = .Range("J6") avec "For i = 0" comme "vide"
Une idée d'où cela peut provenir ?
Merci,
"erreur 424" Objet requis" (je n'ai supprimé aucune feuille).
Si vous avez une erreur c'est que vous avez modifié quelque chose. Genre masquer une feuille, une feuille mal nommée (attention aux espaces, à l'orthographe, majuscules...), feuille et/ou cellules protégées
Si l'erreur se produit à i =0 c'est la feuille OE 100-D1 qui est incriminée ou la feuille "Form_insp"
Dites-moi
Bonjour Dan,
J'ai bien fait attention à ce que toutes les feuilles soient nommées correctement.
Aucune feuille protégée.
Les feuilles étaient masquées mais en début de code je les affiche et en fin de code les masque avec "Sheets("OE 100-D1").visible = True / False
L'erreur continue de se produire à i = 0
Une idée ?
Merci,
Bonjour
Je ne sais pas ce qu'il s'est passé depuis hier, mais après avoir lancé la macro (qui fonctionnait très bien!) maintenant j'ai un message d'erreur : "erreur 424" Objet requis" (je n'ai supprimé aucune feuille).
Hum... Ce n'est pas possible que cela ait déjà fonctionné hier je viens de me rendre compte qu'il y a une faute dans le code que je vous ai donné.
En fait, à toutes les lignes du code que je vous ai données, ce n'est pas :
feuille(i)=.Range("..mais
Sheets(feuille(i)).Range("....J'ai corrigé le code complet dans mon poste précédent--> https://forum.excel-pratique.com/s/goto/1150625
Reprenez celui-là
Désolé ....
Crdlt