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

Microsoft 365 Listbox case à cocher transfert sur feuille

  • Initiateur de la discussion Initiateur de la discussion Scorpio
  • Date de début Date de début

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 !

Scorpio

XLDnaute Impliqué
Bonjour à tous,
J'ai dans ce classeur un formulaire avec 2 listbox et un bouton de transfert sur feuille.
Je suis pas l'auteur des codes, hélas, mais cela m'intéresserais de l'utiliser.
Le soucis, c'est lors du transfert, dans la feuille "Regroupe", il n'y a rien ou presque rien.
Y aurais-t-il un membre sympas, pour me dépanner.
Je vous en remercie d'avance, et à ++++
Scorpio
 

Pièces jointes

Bonjour Scorpio,
Un essai en PJ avec quelques modifications dans CommandButton1_Click :
- remplacez Clear par Clearcontents conserve les formats utilisés
- précisez dans quel userform on travaille, en l'occurrence ListBox1
- je ne comprends pas l'utilité de la mise en forme sur la colonne 7
En espérant ne pas être à coté de la plaque. 🙂
 

Pièces jointes

Bonjour Sylvanu,
Super boulot, un grand merci.
Est-ce qu'il serais possible de faire encore une modif ??
En fait, je voudrais faire la recherche dans la colonne "A"
Merci Sylvanu, à ++++
Scorpio
 
Re,
Dans la classeur du fil #4, le transfert est très rapide
J'ai copié le formulaire dans un autre classeur mais avec beaucoup plus de donnée, (données Perso, sensible)
Et là, c'est beaucoup plus lent, ca fonctionne mais au ralentis, pourquoi, ???
 
Bonjour Scorpio, sylvanu,
J'ai copié le formulaire dans un autre classeur mais avec beaucoup plus de donnée, (données Perso, sensible)
Et là, c'est beaucoup plus lent, ca fonctionne mais au ralentis, pourquoi, ???
La macro de transfert est lente parce qu'elle remplit les cellules une par une :
VB:
            For i = 0 To ListBox1.ListCount - 1
                For j = 0 To ListBox1.ColumnCount - 2
                    .Cells(2 + i, j + 1) = ListBox1.List(i, j)    'boucle de transfert
                Next j
            Next i
Il faut bien sûr les remplir en passant par un tableau VBA, c'est classique.

Nota : 5000 données c'est peanuts...

A+
 
Bonjour Job,
Cette approche était dans la version initiale, donc inchangée pour le problème de ce fil qui ne concernait que "Listbox case à cocher transfert sur feuille"

En PJ une autre approche en passant par un array, on passe de 2.3s à 0.15s.
 

Pièces jointes

Re Sylvanu, et job75
Je pense cette fois c'est bon, en faisant mes essais, c'est bien plus rapide.
Super grand merci de votre précieuse aide, et à une autre occasion.
Merci beaucoup beaucoup
Scorpio. 😉
 
Je refais mon message.

En fait ListBox1.List est déjà un tableau VBA donc utilisez :
VB:
Private Sub CommandButton1_Click()
    Dim T0, n&
    T0 = Timer
    n = ListBox1.ListCount
    With Sheets("Regroupe").[A2]
        If n Then .Resize(n, 6) = ListBox1.List
        .Offset(n).Resize(Rows.Count - n - .Row + 1, 6).ClearContents 'RAZ en dessous
    End With
    TempsTransfert = "Temps de transfert : " & Round(1000 * (Timer - T0), 0) & "ms"
    MsgBox "Transfert terminé!", vbOKOnly + vbInformation, "TRANSFERT"
End Sub
 
- 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
7
Affichages
1 K
  • Question Question
Microsoft 365 Filtre Listbox
Réponses
15
Affichages
2 K
Réponses
1
Affichages
701
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…