Exécution d'une macro sur différentes feuilles sous condition
Salut à tous,
J'ai une macro qui me permet à partir des infos fournit par l'utilisateur sur un useform de remplir un excel en allant à la ligne à chaque fois que la macro est exécutée. Mon problème est que j'ai 3 feuilles sur cet excel et j'aimerais qu'en fonction d'une condition sur mon userform la macro s'exécute sur telle ou telle feuille. Si vous avez des idées, merci d'avance;
Private Sub CommandButton1_Click()
'saut de ligne à chaque importation de données
Dim intLine As Integer
intLine = Range("a65000").End(xlUp).Row + 1
Cells(intLine, 1).Value = ComboBox1
Cells(intLine, 2).Value = TextBox1.Value
Cells(intLine, 3).Value = TextBox2.Value
Cells(intLine, 4).Value = TextBox5.Value
Cells(intLine, 5).Value = ComboBox6.Value
Cells(intLine, 7).Value = TextBox8.Value
Cells(intLine, 10).Value = ComboBox2.Value
Cells(intLine, 8).Value = ComboBox7
'définition variables
Dim Myxxxx, Myxxx, Myxxxx, Myxxxx, Myxxxx, Myxxx, Myxxxx, Myxxxx, Myxxxx, Myxxx, Myxxxx As String
Myxxxx = TextBox2.Value
Myxxxx = ComboBox2.Value
Myxxxx = ComboBox3.Value
Myxxxx = TextBox9.Value
Myxxxxx = TextBox10.Value
Myxxxxx = TextBox11.Value
Myxxxxxx = TextBox12.Value
Myxxxxx = TextBox13.Value
Myxxxxx = TextBox18.Value
Myxxxxx = TextBox5.Value
Myxxxxx = TextBox17.Value
'selon les produits
If ComboBox6.Value = "xxxx" Then
Cells(intLine, 6).Value = xxxxxx 'HTML pour remplir une cellule'xxxxx
ElseIf ComboBox6.Value = "xxxxxx" Then
If ComboBox7.Value = "xxx" Then
Cells(intLine, 6).Value = xxxxx 'HTMLxxxxx
ElseIf ComboBox7.Value = "xxxx" Then
Cells(intLine, 6).Value = xxxxHTMLxxxx
End If
End If
End Sub
Mon code fait ensuite pas mal de calculs raison pour laquelle je déclare pas mal de variables. Merci pour votre temps.
Bonsoir
Eh bien tu testes ta condition,
si condition x , ajouter dans Feuil1
si condition y , ajouter dans Feuil2
si condition z , ajouter dans Feuil3.....
Et voilà
si cela ne te suffit pas , tu pourras toujours joindre un fichier exemple et là , nous pourrons peut-être être plus précis
Bonne soirée
Bye
Merci de ta réponse.
Je ne sais justement pas comment l'écrire :
If ComboBox.Value = "xxxxxxxx" Then
Je ne sais pas quoi mettre après le Then, dois-je répéter mon code 3 fois en désignant à chaque fois quelle est l'Active Sheet...je suis un peu perdu, si tu as d'autres indications, avec plaisir.
Merci
Bonsoir
Sans fichier difficile, mais voilà:
tu peux définir tes 3 feuilles, puis
Dim Sh1, sh2, sh3 As Worksheet
Set Sh1 = Worksheets("Feuil1")
Set Sh2 = Worksheets("Feuil2")
Set Sh3 = Worksheets("Feuil3")
If ComboBox.Value = "xxxxxxxx" Then
sh1.Cells(lig,col) = tonchamp
else
lig, étant la ligne souhaitée, col la colonne
etc...je ne sais pas ce que tu veux faire
Bye
Bonjour merci de la réponse. Malheureusement, je ne peux pas envoyer le fichier car il contient des données confidentielles notamment au niveau de l'userform...Ton code marche en effet mais je ne veux pas indiquer la ligne ou la colonne car mon code le fait tout seul : il remplit lignes après lignes et à chaque qu'il est relancé il remplit la ligne au-dessous de la dernière ligne remplit. J'essaye juste de vouloir indiquer sur quelle feuille de mon fichier mon code doit s'exécuter mais sans succès..
Private Sub UserForm_Initialize()
ComboBox1.AddItem Range("R2")
ComboBox1.AddItem Range("R3")
ComboBox1.AddItem Range("R4")
ComboBox2.AddItem Range("R6")
ComboBox2.AddItem Range("R7")
ComboBox2.AddItem Range("R8")
ComboBox2.AddItem Range("R9")
ComboBox2.AddItem Range("R10")
ComboBox2.AddItem Range("R11")
ComboBox3.AddItem Range("R6")
ComboBox3.AddItem Range("R7")
ComboBox3.AddItem Range("R8")
ComboBox3.AddItem Range("R9")
ComboBox3.AddItem Range("R10")
ComboBox3.AddItem Range("R11")
ComboBox4.AddItem Range("R6")
ComboBox4.AddItem Range("R7")
ComboBox4.AddItem Range("R8")
ComboBox4.AddItem Range("R9")
ComboBox4.AddItem Range("R10")
ComboBox4.AddItem Range("R11")
ComboBox5.AddItem Range("R6")
ComboBox5.AddItem Range("R7")
ComboBox5.AddItem Range("R8")
ComboBox5.AddItem Range("R9")
ComboBox5.AddItem Range("R10")
ComboBox5.AddItem Range("R11")
ComboBox6.AddItem Range("R13")
ComboBox6.AddItem Range("R14")
ComboBox6.AddItem Range("R15")
ComboBox7.AddItem Range("R17")
ComboBox7.AddItem Range("R18")
End Sub
Private Sub CommandButton1_Click()
Dim intLine As Integer 'saut de ligne à chaque importation de données
intLine = Range("a65000").End(xlUp).Row + 1
Cells(intLine, 1).Value = ComboBox1
Cells(intLine, 2).Value = TextBox1.Value
Cells(intLine, 3).Value = TextBox2.Value
Cells(intLine, 4).Value = TextBox5.Value
Cells(intLine, 5).Value = ComboBox6.Value
Cells(intLine, 7).Value = TextBox8.Value
Cells(intLine, 10).Value = ComboBox2.Value
Cells(intLine, 8).Value = ComboBox7
'définition variables
Dim Myxxxx, Myxxxx, Myxxxx, Myxxxx, Myxxxxx, Myxxxxx, Myxxxxx, Myxxxxx, Myxxx, Myxx, Myxxx As String
Myx = TextBox2.Value
Myxx = ComboBox2.Value
Myxx = ComboBox3.Value
Myxx = TextBox9.Value
Myxxx = TextBox10.Value
Myxxx = TextBox11.Value
Myxxx = TextBox12.Value
Myxxx = TextBox13.Value
My = TextBox18.Value
Myxxx = TextBox5.Value
Myxx = TextBox17.Value
'selon une condition remplit sur l'userform
If ComboBox6.Value = "xxx" Then
Cells(intLine, 6).Value = 'code HTML
ElseIf ComboBox6.Value = "xxxx" Then
If ComboBox7.Value = "xx" Then
Cells(intLine, 6).Value = HTML
ElseIf ComboBox7.Value = "xxxx" Then
Cells(intLine, 6).Value = HTML
End If
End If
End Sub
Mon code s'exécute très bien avec des sauts à lignes à chaque nouvelle info sur l'userform mais toujours sur la première feuille...encore merci de ton temps pour tes précédentes réponses.
Bonjour
Désolée mais je ne vois pas comment je peux t'aider
Je t'ai expliqué que selon la condition que toi seul connais, tu indiques devant tes cellules le nom de la feuille
Que puis-je faire d'autre ???
Si tu pouvais au moins extraire une partie de ton fichier, en modifiant les données confidentielles, et en indiquant exactement quelles sont tes conditions pour aller sur telle ou telle feuille
Bonne journée