XL 2010 Collage valeur dans formulaire avec Userform

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 !

candido57

XLDnaute Occasionnel
Bonjour,
J'ai réussi à faire une macro pour remplir un formulaire Excel, mais lorsque, je ne remplie pas les Combobox et TextBox ( la valeur par défaut est 1), lors de la validation, l'Userform colle toutes les Combobox et TextBox, même celle qui ne sont pas remplie . Voir mon fichier encadré en rouge, feuille "Base"
Ce que je veux, c'est lorsque je rempli par une combobox1 = Art_1 avec la quantité avec TextBox1 = Tbx_Quant1, je souhaite uniquement coller la valeur combobox1 et TextBox1 et les 15 qui suivent ne doivent pas être collés.
Vous pouvez également voir que ma macro est une usine à gaz, si possible , il faudrait optimiser. ( Désolé , j'essai d'apprendre, je suis un peu nul😁, mais j'essai de m'améliorer)
J'espère que ma demande est compréhensible.

En tous les cas , merci pour votre aide
 

Pièces jointes

Bonjour Candido,
Dans userform_initialize vous pouvez simplifier toutes les affectations de Art_x et Quantx avec :
VB:
For N = 1 To 16
    UserForm2.Controls("Art_" & N).RowSource = "Produit"
    UserForm2.Controls("Tbx_Quant" & N).Value = 1
Next N
Ensuite votre demande est ambigüe, j'ai traduit par si un Art_x est vide on écrit rien et on passe à la suivante.
alors peut être en faisant :
Code:
 Set ws = ThisWorkbook.Sheets("Base") ' Remplace "Base" par le nom de ta feuille
lastRow = ws.Cells(ws.Rows.Count, "G").End(xlUp).Row  ' Trouve la première ligne vide
If Me.Art_1.Value <> "" Then
    ws.Cells(lastRow, 1).Value = TextBox_DateDuJ.Value
    ws.Cells(lastRow, 2).Value = Me.ComboBox_Carte.Value
    ws.Cells(lastRow, 3).Value = Me.Tbx_NbPoints.Value
    ws.Cells(lastRow, 4).Value = Me.Tbx_Nom.Value
    ws.Cells(lastRow, 5).Value = Me.Tbx_Prénom.Value
    ws.Cells(lastRow, 6).Value = Me.ComboBox_Semaine.Value
    ws.Cells(lastRow, 7).Value = Me.Art_1.Value ' Colonne A : première donnée
    ws.Cells(lastRow, 8).Value = Me.Tbx_Quant1.Value ' Colonne B : deuxième donnée
    ws.Cells(lastRow, 9).Value = Me.Tbx_Dotation.Value
    ws.Cells(lastRow, 10).Value = Me.TextBox8.Value
End If
lastRow = ws.Cells(ws.Rows.Count, "G").End(xlUp).Row  ' Trouve la première ligne vide
A noter qu'à la fin on ne fait pas "lastRow = lastRow + 1 " car on peut ne pas avoir collé, on fait recherche de la dernière ligne.
 
- 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
47
Affichages
4 K
Retour