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.
 

Jacky67

XLDnaute Barbatruc
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:

Chguar

XLDnaute Nouveau
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

  • dossier vba.xlsx
    55 KB · Affichages: 32

Jacky67

XLDnaute Barbatruc
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:

Discussions similaires

Statistiques des forums

Discussions
315 083
Messages
2 116 035
Membres
112 640
dernier inscrit
rachidqadmir