Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…