XL 2013 collage valeur avec bouton validation est trop lente

candido57

XLDnaute Occasionnel
Bonjour,
J'ai un fichier avec un userform et en cliquant sur "VALIDER", j'ai les informations du userform qui se collent sur les lignes au fur et à mesure. Le fichier fonctionne très bien, mais lorsque j'appuis sur VALIDER, les informations se collent très lentement.
Que peut on faire pour accélérer le collage valeur?

Et sur le même fichier, dans userform, j'ai une liste déroulante avec des articles et je voudrais savoir s'il est possible de faire des multi choix en sélectionnant les articles par exemple 3 articles et en appuyant sur VALIDER, les 3 produites se collent dans mon fichier ( Un en dessous de l'autre).
Est ce possible?

Merci d'avance pour votre aide
 

Pièces jointes

  • Produit complémentaire TEST.xls
    644 KB · Affichages: 7

candido57

XLDnaute Occasionnel
réfléchi un peu quand même....
regarde cette ligne et adapte la
Sheets("Articles").Range("O2") = Me.ComboBox_Carte 'on inscrit le numéro de carte en O2
J'ai mis ce code , lorsque je sélectionne l'article, il se colle en S1
Sheets("Articles").Range("S1") = ListBox1.Selected
mais j'ai une erreur. Par contre je l'ai mis à la fin Private Sub ComboBox_Carte_Change() car je veux qu'il colle le résultat dès que je saisi le n° de carte
 

vgendron

XLDnaute Barbatruc
Je n'y arrive pas
t'as pas du beaucoup chercher ... la boucle est dans le code du bouton "valider"
VB:
Private Sub Cbn_Valider_Click() 'au clic sur le bouton Valider
Application.ScreenUpdating = False 'désactive le refresh
Application.Calculation = xlCalculationManual 'désactive le calcul auto
    For i = 0 To Me.ListBox1.ListCount - 1 'pour chaque élément de la listbox
        If Me.ListBox1.Selected(i) Then 'si l'élément est selectionné
            ItemsSélectionnés = ItemsSélectionnés & Chr(10) & Me.ListBox1.List(i) 'on ajoute l'élément à la variable "ItemsSélectionnés"
            'MsgBox Me.ListBox1.List(i)
            With Sheets("Base").ListObjects("t_Base") 'avec la table "t_Base" de la feuille "Base"
                .ListRows.Add 'on ajoute une ligne dans la table
                derligne = .ListRows.Count 'dernière ligne de la table = celle qu'on vient d'ajouté
                
                .DataBodyRange(derligne, 1).Value = CDbl(Me.TextBox_N°) 'N° dans la colonne 1
                .DataBodyRange(derligne, 2).Value = Me.TextBox_DateDuJ 'Date dans la colonne 2
                .DataBodyRange(derligne, 3).Value = Me.ComboBox_Carte.Value 'N° de carte
                .DataBodyRange(derligne, 4).Value = Me.TextBox11.Value 'Nb de points
                .DataBodyRange(derligne, 5).Value = Me.TextBox10.Value 'Nom
                .DataBodyRange(derligne, 6).Value = Me.TextBox4.Value 'prénom
                .DataBodyRange(derligne, 7).Value = Me.ComboBox_Semaine 'N° Semaine
                .DataBodyRange(derligne, 8).Value = Me.ListBox1.List(i) 'Désignation
                .DataBodyRange(derligne, 9).Value = Me.TextBox7.Value 'Quantité prise
                .DataBodyRange(derligne, 10).Value = Me.TextBox8.Value 'Commentaires
            End With
            Sheets("Articles").Range("O2") = Me.ComboBox_Carte 'on inscrit le numéro de carte dans la feuille Articles en O2
            Sheets("Articles").Range("S2") = ItemsSélectionnés 'on inscrit les ItemsSélectionnés dans la feuille Articles en S2
        End If
    Next i
    
    'Raz USF ==> on déselectionne les combo et on vide les textbox
    Me.ComboBox_Carte.ListIndex = -1
    Me.TextBox11.Value = ""
    Me.ComboBox_Semaine.ListIndex = -1
    Me.TextBox7.Value = ""
    Me.TextBox10.Value = ""
    Me.TextBox4.Value = ""
    Me.TextBox12.Value = ""
    Me.TextBox13.Value = ""
    For i = 0 To Me.ListBox1.ListCount - 1 'on déselectionne tous les éléments de la listbox
        Me.ListBox1.Selected(i) = False
    Next i
    
    Me.TextBox_N° = Me.TextBox_N° + 1
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 

candido57

XLDnaute Occasionnel
t'as pas du beaucoup chercher ... la boucle est dans le code du bouton "valider"
VB:
Private Sub Cbn_Valider_Click() 'au clic sur le bouton Valider
Application.ScreenUpdating = False 'désactive le refresh
Application.Calculation = xlCalculationManual 'désactive le calcul auto
    For i = 0 To Me.ListBox1.ListCount - 1 'pour chaque élément de la listbox
        If Me.ListBox1.Selected(i) Then 'si l'élément est selectionné
            ItemsSélectionnés = ItemsSélectionnés & Chr(10) & Me.ListBox1.List(i) 'on ajoute l'élément à la variable "ItemsSélectionnés"
            'MsgBox Me.ListBox1.List(i)
            With Sheets("Base").ListObjects("t_Base") 'avec la table "t_Base" de la feuille "Base"
                .ListRows.Add 'on ajoute une ligne dans la table
                derligne = .ListRows.Count 'dernière ligne de la table = celle qu'on vient d'ajouté
               
                .DataBodyRange(derligne, 1).Value = CDbl(Me.TextBox_N°) 'N° dans la colonne 1
                .DataBodyRange(derligne, 2).Value = Me.TextBox_DateDuJ 'Date dans la colonne 2
                .DataBodyRange(derligne, 3).Value = Me.ComboBox_Carte.Value 'N° de carte
                .DataBodyRange(derligne, 4).Value = Me.TextBox11.Value 'Nb de points
                .DataBodyRange(derligne, 5).Value = Me.TextBox10.Value 'Nom
                .DataBodyRange(derligne, 6).Value = Me.TextBox4.Value 'prénom
                .DataBodyRange(derligne, 7).Value = Me.ComboBox_Semaine 'N° Semaine
                .DataBodyRange(derligne, 8).Value = Me.ListBox1.List(i) 'Désignation
                .DataBodyRange(derligne, 9).Value = Me.TextBox7.Value 'Quantité prise
                .DataBodyRange(derligne, 10).Value = Me.TextBox8.Value 'Commentaires
            End With
            Sheets("Articles").Range("O2") = Me.ComboBox_Carte 'on inscrit le numéro de carte dans la feuille Articles en O2
            Sheets("Articles").Range("S2") = ItemsSélectionnés 'on inscrit les ItemsSélectionnés dans la feuille Articles en S2
        End If
    Next i
   
    'Raz USF ==> on déselectionne les combo et on vide les textbox
    Me.ComboBox_Carte.ListIndex = -1
    Me.TextBox11.Value = ""
    Me.ComboBox_Semaine.ListIndex = -1
    Me.TextBox7.Value = ""
    Me.TextBox10.Value = ""
    Me.TextBox4.Value = ""
    Me.TextBox12.Value = ""
    Me.TextBox13.Value = ""
    For i = 0 To Me.ListBox1.ListCount - 1 'on déselectionne tous les éléments de la listbox
        Me.ListBox1.Selected(i) = False
    Next i
   
    Me.TextBox_N° = Me.TextBox_N° + 1
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Lorsque je sélectionne l'article dans la listbox1 , rien ne se passe, mais cette fonction doit se faire avant d'appuyer sur le bouton valider, mais seulement en le sélectionnant
 

vgendron

XLDnaute Barbatruc
Lorsque je sélectionne l'article dans la listbox1 , rien ne se passe, mais cette fonction doit se faire avant d'appuyer sur le bouton valider, mais seulement en le sélectionnant
evidemment.. il n'y a rien de codé sur l'évènement _click de la listbox..
faudrait quand meme etre plus précis et clair sur ton besoin.. et essayer de comprendre le code que tu as déjà
 

candido57

XLDnaute Occasionnel
evidemment.. il n'y a rien de codé sur l'évènement _click de la listbox..
faudrait quand meme etre plus précis et clair sur ton besoin.. et essayer de comprendre le code que tu as déjà
Avec ce code, il faut que je clique sur valider pour que ça fonctionne ? Ce que je ne veux pas.
Ce que je souhaite, c'est lorsque je sélectionne un article dans la listbox, ce dernier se colle dans la feuille articles en S1. J'essaie comme de comprendre , mais je suis très très débutant
 

vgendron

XLDnaute Barbatruc
Avec ce code, il faut que je clique sur valider pour que ça fonctionne ?
bah oui.. puisque c'est dans le code du bouton "valider _click"

Ce que je ne veux pas.
à quel moment as tu décrit un besoin différent??

Ce que je souhaite, c'est lorsque je sélectionne un article dans la listbox, ce dernier se colle dans la feuille articles en S1.
pourquoi S1 ??? ca ne correspond à rien dans la feuille...
si tu travailles sur un autre fichier, il serait bon de mettre le bon fichier
et quand tu sélectionnes plusieurs articles, on fait quoi???? puisque tu as demandé à avoir une listbox avec multiselection..
 

candido57

XLDnaute Occasionnel
bah oui.. puisque c'est dans le code du bouton "valider _click"


à quel moment as tu décrit un besoin différent??


pourquoi S1 ??? ca ne correspond à rien dans la feuille...
si tu travailles sur un autre fichier, il serait bon de mettre le bon fichier
et quand tu sélectionnes plusieurs articles, on fait quoi???? puisque tu as demandé à avoir une listbox avec multiselection..
oui j'ai rajouter des colonnes, je vais mettre mon fichier
 

vgendron

XLDnaute Barbatruc
Bonjour,



Ce n'est pas "Articles" mais "ARTICLES ". C'est peut-être ça le pb ??? 🤔
Hello @TooFatBoy
je viens de retomber sur ton post auquel j'avais répondu que la syntaxe n'était sans doute pas en cause..
Je n'avais même pas vu l'espace en plus dans la version rouge... (syntaxe différente qui provoque bien un bug)
j''étais resté sur Minuscules vs Majuscule.. (Casse différente qui n'a pas d'importance)

Désolé;)
 

Discussions similaires

Statistiques des forums

Discussions
314 629
Messages
2 111 345
Membres
111 109
dernier inscrit
djameldel