Transfert données Formulaire --> Feuille Excel

Bonjour à tous,

Mon Userform dispose de quatre Comboboxes, de trois Textboxes et d´un bouton, afin de décharger les données dans une feuille nommée "Commandes".

L´utilisateur a alors le choix de sélectionner le nombre d´articles qu'il souhaite via les Comboboxes et effectuer sa commande via le bouton "Valider".

Malheureusement, lorsque seulement un à trois articles sont sélectionnés et que les données sont déchargées, les données des Textboxes se déchargent une fois de trop et créent une ligne supplémentaire dans l'onglet "Commandes".

Comment puis-je modifier mon code afin de supprimer cette dernière ligne de données?

Private Sub CommandButtonValider_Click()

num  =  Sheets("Commandes").Range("A65536").End(xlUp).Row + 1

Sheets("Commandes").Activate

Range("A" & num).Value = ComboBoxArticle1.Value
Range("B" & num).Value = TextBoxDate.Value
Range("D" & num).Value = TextBoxLieu.Value
Range("F" & num).Value = TextBoxContact.Value
num = Sheets("Commandes").Range("A65536").End(xlUp).Row + 1

Range("A" & num).Value = ComboBoxArticle2.Value
Range("B" & num).Value = TextBoxDate.Value
Range("D" & num).Value = TextBoxLieu.Value
Range("F" & num).Value = TextBoxContact.Value
num = Sheets("Commandes").Range("A65536").End(xlUp).Row + 1

Range("A" & num).Value = ComboBoxArticle3.Value
Range("B" & num).Value = TextBoxDate.Value
Range("D" & num).Value = TextBoxLieu.Value
Range("F" & num).Value = TextBoxContact.Value
num = Sheets("Commandes").Range("A65536").End(xlUp).Row + 1

Range("A" & num).Value = ComboBoxArticle4.Value
Range("B" & num).Value = TextBoxDate.Value
Range("D" & num).Value = TextBoxLieu.Value
Range("F" & num).Value = TextBoxContact.Value
num = Sheets("Commandes").Range("A65536").End(xlUp).Row + 1

Unload UserForm1

End Sub

En espérant que j´ai été assez clair pour que quelqu'un puisse m'aider!

Meilleurs Salutations

AliasOne

Bonjour,

C'est normale d'avoir une ligne en plus, vu que tu fais le traitement pour les 4 combox à chaques fois, donc le traitement pour la combobox sans articles se fait aussi.

Je serais toi, je ferais un petit test IF avant chacun de tes 4 bloques là, en vérifiant si la combobox a eu une valeur de choisie ou non, et tu ne fais le traitement que si elle a une valeur.

Je t'aiderais bien plus en détail mais je ne vais pas avoir le temps d'ici lundi, donc je laisse le soin à quelqu'un d'autre de te répondre si jamais, mais je pense que tu dois être capable de faire un

IF ....
    'ton code actuel pour une combobox
end if

Cordialement,

Bonjour et merci pour ta réponse rapide.

J'ai déjà essayé le code suivant mais cela ne fonctionne pas.

Est-ce bien cela que tu me conseillais d'essayer?

D´autres solutions?!

Private Sub CommandButtonValider_Click()

num  =  Sheets("Commandes").Range("A65536").End(xlUp).Row + 1

Sheets("Commandes").Activate

If ComboboxArticle1.Value = True Then
Range("A" & num).Value = ComboBoxArticle1.Value
Range("B" & num).Value = TextBoxDate.Value
Range("D" & num).Value = TextBoxLieu.Value
Range("F" & num).Value = TextBoxContact.Value
num = Sheets("Commandes").Range("A65536").End(xlUp).Row + 1
End If

If ComboboxArticle2.Value = True Then
Range("A" & num).Value = ComboBoxArticle2.Value
Range("B" & num).Value = TextBoxDate.Value
Range("D" & num).Value = TextBoxLieu.Value
Range("F" & num).Value = TextBoxContact.Value
num = Sheets("Commandes").Range("A65536").End(xlUp).Row + 1
End if

If ComboboxArticle3.Value = True Then
Range("A" & num).Value = ComboBoxArticle3.Value
Range("B" & num).Value = TextBoxDate.Value
Range("D" & num).Value = TextBoxLieu.Value
Range("F" & num).Value = TextBoxContact.Value
num = Sheets("Commandes").Range("A65536").End(xlUp).Row + 1
End If

If ComboboxArticle4.Value = True Then
Range("A" & num).Value = ComboBoxArticle4.Value
Range("B" & num).Value = TextBoxDate.Value
Range("D" & num).Value = TextBoxLieu.Value
Range("F" & num).Value = TextBoxContact.Value
num = Sheets("Commandes").Range("A65536").End(xlUp).Row + 1
End If

Unload UserForm1

End Sub 

Aliasone

Bonjour

Avant d'écrire testes le combobox

If Me.ComboboxArticle1.ListIndex > -1 Then
' Sauvegarde des TextBoxes
End If

Bonsoir,

Merci bien pour ta réponse, cela fonctionne parfaitement!

J'ai tout de même deux petites questions afin de comprendre le code !

Quelles est la différence entre :

Combobox.Value = True et Combobox.ListIndex > -1 ?

La valeur d'un Combobox ne peut-il donc pas être True ou False mais seulement > -1 ou -1 ?

Que signifie le "Me" dans le code et quand peut-on l´utiliser?

Merci d'avance pour ces informations!

Bon weekend!

AliasOne

Bonjour

Sauf erreur ou omission de ma part

Pour définir l'état d'une ComboBox (savoir si la donnée inscrite dans la combobox) est issue de la liste ou non, on utilise La propriété ListIndex qui retourne -1 si ce qui y a dans la ComboBox ne fait pas partie des choix possibles

La chaine vide ne fait pas partie (en principe) des choix possibles

si cette propriété retourne un nombre supérieur à -1 (0 jusqu'au nombre d'éléments -1) cela indique que la valeur dans la ComboBox est reconnue comme faisant partie des choix possibles

Et True ou False ne font pas partie des propriétés des ComboBox

Ces propriétés sont valables pour les OptionButton et pour les CheckBox

Beaucoup de choses à dire sur toutes ces propriétés, donc je conseille de regarder l'aide du VBA

Le Me remplaces le Userform1 (par exemple)

C'est une habitude que j'ai prise, en plus elle permet d'avoir une présélection des contrôles dans l'Userform

essayes de taper dans le code d'un Userform

Me.
Rechercher des sujets similaires à "transfert donnees formulaire feuille"