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 !

Chguar

XLDnaute Nouveau
Bonjour à tous,
J’ai créé un Userform sur VBA et j’ai associé un code pour le bouton OK.

Voici mon code :

Private Sub CommandButton2_Click()

If TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox3.Value = "" Or TextBox4.Value = "" Or ComboBox1.Value = "" Then
MsgBox ("Veuillez remplir touts les champs")

Else
Sheets("Présentation").Cells(22, 3) = TextBox1.Value
Sheets("Présentation").Cells(23, 3) = TextBox2.Value

Sheets("Dossier").Cells(1, 2) = TextBox1.Value
Sheets("Dossier").Cells(23, 3) = TextBox2.Value

Sheets("Page").Cells(1, 2) = TextBox1.Value
Sheets("Page").Cells(23, 3) = TextBox2.Value

...
End if
End sub


Je pense que vous avez compris mon problème. Je dois remplir des cellules avec les mêmes « coordonnées », mais situées dans des feuilles différentes. Je suis donc obligée de réécrire le code pour chaque feuilles ( sachant que les feuilles ne se suivent pas, : feuille1, feuille4, feuille7...).

Y-à-t-il une méthode pour raccourcir le code ?

Merci d’avance pour votre aide.
 
Bonjour,
Cela pourrait ressembler à cela
Code:
Private Sub CommandButton2_Click()
Dim Sh As Worksheet
If TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox3.Value = "" Or TextBox4.Value = "" Or ComboBox1.Value = "" Then
  MsgBox ("Veuillez remplir tous les champs")
Else
  For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name <> "xxx" And Sh.Name <> "yyy" Then ' ici le nom des feuilles à exclure(xxx et yyy sont des exemples)
      With Sh
        .Cells(22, 3) = TextBox1.Value
        .Cells(23, 3) = TextBox2.Value
       '........
       '........
       '........
      End With
    End If
  Next
End If
End Sub

Non testé à défaut de classeur joint
Mais cela devrait faire
 
Dernière édition:
Bonjour,
Cela pourrait ressembler à cela
Code:
Private Sub CommandButton2_Click()
Dim Sh As Worksheet
If TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox3.Value = "" Or TextBox4.Value = "" Or ComboBox1.Value = "" Then
  MsgBox ("Veuillez remplir tous les champs")
Else
  For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name <> "xxx" And Sh.Name <> "yyy" Then ' ici le nom des feuilles à exclure(xxx et yyy sont des exemples)
      With Sh
        .Cells(22, 3) = TextBox1.Value
        .Cells(23, 3) = TextBox2.Value
       '........
       '........
       '........
      End With
    End If
  Next
End If
End Sub

Non testé à défaut de classeur joint
Mais cela devrait faire



J'ai essayé mais cela n'a pas fonctionné. Je te joint le classeur concerné.
Merci encore pour ta réactivité.
 

Pièces jointes

Effectivement...
Je viens de rajouter le bouton de commande et les codes.
RE...
S'il n'y a que 4 feuilles à traiter ("Page","O11", "O13" et "O21")
Ceci devrait être suffisant
VB:
Private Sub CommandButton2_Click()
Dim Sh
If TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox3.Value = "" Or TextBox4.Value = "" Or ComboBox1.Value = "" Then
  MsgBox ("Veuillez remplir touts les champs")
Else
  With Sheets("Page")
    .Cells(22, 3) = TextBox1.Value
    .Cells(23, 3) = TextBox2.Value
    .Cells(30, 3) = ComboBox1.Value
    .Cells(31, 3) = TextBox4.Value
  End With
  For Each Sh In Array("O11", "O13", "O21")
    With Sheets(Sh)
      .Cells(1, 2) = TextBox1.Value
      .Cells(5, 2) = TextBox2.Value
      .Cells(1, 5) = ComboBox1.Value
      .Cells(3, 5) = TextBox4.Value
      .Cells(3, 2) = TextBox3.Value
    End With
  Next
  Unload UserForm1
End If
End Sub
ps: les feuilles à traiter doivent toujours avoir le même nom.
**Il faut se méfier des noms de feuille qui ont un espace comme dernière lettre ("Dossier 2 " et "Dossier 1 ", c'est souvent sujet à des recherches d'erreurs inutile
 
Dernière édition:
- 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

Retour