modification de mon code

  • Initiateur de la discussion Initiateur de la discussion bpol
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bpol

XLDnaute Impliqué
Bonjour,

j'ai oublié comment on fait pour que mon code fonctionne avec le nom de feuille variable

c'est à dire que ma macro est activée par un bouton qui se trouve sur ma feuille modèle ("commande") qui est copiée mais avec un nouveau nom par exemple ("2")

Code:
Sheets("facture").Select
Range("D7").Value = Format(Now, "mm/dd/yyyy")
Range("G7") = Sheets("commande")("B5") & " " & Sheets("commande").Range("B6")
Range("G8") = Sheets("commande")("B12")
Range("G6") = Sheets("commande")("B4")
Range("J8") = Sheets("commande")("D12")
Range("G10") = IIf(Sheets("commande").Range("B13") = " ", Sheets("commande").Range("D13"), Sheets("commande").Range("B13"))
Range("I10") = IIf(Sheets("commande").Range("B14") = " ", Sheets("commande").Range("D14"), Sheets("commande").Range("B14"))
Range("C16") = Sheets("commande").Range("G27").Value
Range("D16") = Sheets("commande").Range("H27").Value
Range("I16") = Sheets("commande").Range("I27").Value
Range("C17") = Sheets("commande").Range("G28").Value
Range("D17") = Sheets("commande").Range("H28").Value
Range("I17") = Sheets("commande").Range("I28").Value
Range("C18") = Sheets("commande").Range("G29").Value
Range("D18") = Sheets("commande").Range("H29").Value
Range("I18") = Sheets("commande").Range("I29").Value
Range("C19") = Sheets("commande").Range("G30").Value
Range("D19") = Sheets("commande").Range("H30").Value
Range("I19") = Sheets("commande").Range("I30").Value
Range("D42") = Sheets("commande").Range("L24").Value

en fait c'est sheets("commande") qu'il faut modifier en ammenant la variable.

Bpol
 
Re : modification de mon code

Bonjour,
houlà peux tu être un peu plus clair afin que je comprenne parce que pour moi c'est hard

suivant les conseils et mes petites connaissances en VBA j'ai pondu cela:

Code:
Dim NomFeuille As String
ActiveSheet.Name = Onglet
Sheets("facture").Select
Range("D7").Value = Format(Now, "mm/dd/yyyy")
Range("G7") = ActiveSheet("B5") & " " & ActiveSheet.Range("B6")
Range("G8") = ActiveSheet("B12")
Range("G6") = ActiveSheet("B4")
Range("J8") = ActiveSheet("D12")
Range("G10") = IIf(ActiveSheet.Range("B13") = " ", ActiveSheet.Range("D13"), ActiveSheet.Range("B13"))
Range("I10") = IIf(ActiveSheet.Range("B14") = " ", ActiveSheet.Range("D14"), ActiveSheet.Range("B14"))
Range("C16") = ActiveSheet.Range("G27").Value
Range("D16") = ActiveSheet.Range("H27").Value
Range("I16") = ActiveSheet.Range("I27").Value
Range("C17") = ActiveSheet.Range("G28").Value
Range("D17") = ActiveSheet.Range("H28").Value
Range("I17") = ActiveSheet.Range("I28").Value
Range("C18") = ActiveSheet.Range("G29").Value
Range("D18") = ActiveSheet.Range("H29").Value
Range("I18") = ActiveSheet.Range("I29").Value
Range("C19") = ActiveSheet.Range("G30").Value
Range("D19") = ActiveSheet.Range("H30").Value
Range("I19") = ActiveSheet.Range("I30").Value
Range("D42") = ActiveSheet.Range("L24").Value

mais c'est pas bon! 🙁


Bpol
 
Re : modification de mon code

Activesheet est la feuille qui est actuellement visualisée sur l'écran. Si tu veux faire marcher la macro sur plusieurs feuilles, je te conseille de passer par un module avec en paramètre le nom de la feuille...

Tu créés un module dans lequel tu mets ton code avec :

Code:
public sub mafonction( feuille as worksheet)
   feuille.select
   Range("G8") = feuille.range("B12")
   Range("G6") =  feuille.range("B4")
   Range("J8") =  feuille.range("D12")
   'etc...
end sub

public sub masuperfonction()
   dim feuille as worksheet
   set feuille = thisworkbook.worksheets("tafeuille")
   mafonction feuille
end sub
 
Re : modification de mon code

Bonjour bpol,
Une première proposition, si j'ai bien compris...

Code:
Sub facture()
Dim MaFeuille As String
MaFeuille = ActiveSheet.Name
Sheets("facture").Activate
Range("D7").Value = Format(Now, "mm/dd/yyyy")
Range("G7") = MaFeuille("B5") & " " & MaFeuille.Range("B6")
Range("G8") = MaFeuille("B12")
Range("G6") = MaFeuille("B4")
Range("J8") = MaFeuille("D12")
Range("G10") = IIf(MaFeuille.Range("B13") = " ", MaFeuille.Range("D13"), MaFeuille.Range("B13"))
Range("I10") = IIf(MaFeuille.Range("B14") = " ", MaFeuille.Range("D14"), MaFeuille.Range("B14"))
Range("C16") = MaFeuille.Range("G27").Value
Range("D16") = MaFeuille.Range("H27").Value
Range("I16") = MaFeuille.Range("I27").Value
Range("C17") = MaFeuille.Range("G28").Value
Range("D17") = MaFeuille.Range("H28").Value
Range("I17") = MaFeuille.Range("I28").Value
Range("C18") = MaFeuille.Range("G29").Value
Range("D18") = MaFeuille.Range("H29").Value
Range("I18") = MaFeuille.Range("I29").Value
Range("C19") = MaFeuille.Range("G30").Value
Range("D19") = MaFeuille.Range("H30").Value
Range("I19") = MaFeuille.Range("I30").Value
Range("D42") = MaFeuille.Range("L24").Value
Sheets("facture").PrintPreview
Sheets("facture").Activate 'Vérifier si besoin est...
Range("D7,G6:G8,G10,I10,C16:C19,E16:E19,I16:I19,D42,J8").ClearContents
Sheets("suivi").Select 'Activate semble meilleur
End Sub
Dites si cela vous va. Si non donnez plus d'explications
Cordialement
 
Dernière édition:
Re : modification de mon code

Bonjour Efgé,

ce code je l'avais déjà testé mais j'ai chaque fois un message d'erreur :

erreur de compilation tableau attendu

a hauteur de la 1ere ligne avec l'inconnue

Code:
Range("G7") = [B]MaFeuille[/B]("B5") & " " & MaFeuille.Range("B6")

Bon WE blanc, enfin ici.

BPOL
 
Re : modification de mon code

Bonjour bpol,
Essaye de déclarer la feuille à chaque foi:

Code:
Sub facture()
Dim MaFeuille As String
MaFeuille = ActiveSheet.Name
Sheets("facture").Activate
Range("D7").Value = Format(Now, "mm/dd/yyyy")
 
Range("G7").Value = Sheets(MaFeuille).Range("B5").Value & " " & Sheets(MaFeuille).Range("B6").Value
Range("G8").Value = Sheets(MaFeuille).Range("B12").Value
etc...
Cordialement
 
Re : modification de mon code

bonjour a tous

A tester:

Code:
Dim MaFeuille As Worksheet
Set MaFeuille = ActiveSheet
  Sheets("facture").Select
Range("D7").Value = Format(Now, "mm/dd/yyyy")
Range("G7") = MaFeuille.Range("B5") & " " & MaFeuille.Range("B6")
Range("G8") = MaFeuille.Range("B12")
Range("G6") = MaFeuille.Range("B4")
Range("J8") = MaFeuille.Range("D12")
Range("G10") = IIf(MaFeuille.Range("B13") = " ", MaFeuille.Range("D13"), MaFeuille.Range("B13"))
Range("I10") = IIf(MaFeuille.Range("B14") = " ", MaFeuille.Range("D14"), MaFeuille.Range("B14"))
Range("C16") = MaFeuille.Range("G27").Value
Range("D16") = MaFeuille.Range("H27").Value
Range("I16") = MaFeuille.Range("I27").Value
Range("C17") = MaFeuille.Range("G28").Value
'....................
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
948
J
Réponses
5
Affichages
2 K
T
Réponses
6
Affichages
2 K
T
Réponses
4
Affichages
3 K
T
Réponses
1
Affichages
990
T
Retour