XL 2019 Copier et coller automatiquement une nouvelle donnée par un bouton, ListView décallée à la sur la page (Multipage) et vibration du Userform

  • Initiateur de la discussion Initiateur de la discussion ARaul
  • 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 !

ARaul

XLDnaute Nouveau
Bonjour chers Experts. Bonjour le forum
J'espère que ma salutation vous retrouve en pleine forme.

J'ai trois grande préoccupation dans cette nouvelle discussion.

1- Copier et coller automatiquement une donnée par un bouton
A l'exemple du fichier joint, au niveau du Userform1, page1, j'ai fait le formulaire de la base de mes prestations et articles commercialisés qui seront obligatoirement enregistrés avant d'être choisi au niveau du UserForm3 pour la vente. Mais je veux qu'en allant directement sur le UserForm3, le bouton Plus d'option <<F6>> me permet d'accéder au UserForm1 pour l'enregistrement d'un nouvel élément (article ou prestation) et après cet enregistrement, l'on sélectionne la ligne dans la ListView1 et le boutton Copier du coté respectif va nous permettre de copier et coller automatiquement l'élément soit dans la ComboBox3 (si c'est un article) et ComboBox2 (si c'est une prestation).
En effet le bouton Plus d'option sera accessible lorsqu'on va cliquer sur la ComboBox active.

2- Ma listview se décale sur la page à la première ouverture de la page
Lorsque je vais sur la page une première fois, je vois la Listview déjà déplacer pour un coin précisément dans l'angle gauche en haut.

3- Mon Userform vibre ou clignote au cours de l'importation d'un fichier PDF
Au chargement d'un fichier PDF au niveau du UserForm3, il y a une vibration du UserForm qui apparaît et m'indispose.

Voilà mes préoccupations. Prière m'apporter vos différents apports, espertises et expériences comme d'habitude svp.
Fichier joint
 

Pièces jointes

Bonjour,

A l'exemple du fichier joint, au niveau du Userform1, page1, j'ai fait le formulaire de la base de mes prestations et articles commercialisés qui seront obligatoirement enregistrés avant d'être choisi au niveau du UserForm3 pour la vente.
C'est quoi cette fonction toute moisie "items_from_database_to_combobox_CATEGORIE" et les deux autres équivalentes ???
C'est encore cette débilité de ChatGPT qui a pondu ça ?
Et en plus là ça fait n'importe quoi !
Tu peux les supprimer. Ton classeur ne s'en portera que mieux. 😉


Je t'ai pourtant déjà montré précédemment comment remplacer ces trucs inutiles (et en plus faux ici) par une seule ligne de VBA qui elle au moins te donnera un résultat correcte. 🙁



Y a-t-il une raison particulière pour que tu utilises des ListView plutôt que des ListBox ?
 
Dernière édition:
3- Mon Userform vibre ou clignote au cours de l'importation d'un fichier PDF
Au chargement d'un fichier PDF au niveau du UserForm3, il y a une vibration du UserForm qui apparaît et m'indispose.
Sur mon PC, je ne constate rien de particulier lors du chargement d'un fichier PDF dans le UserForm3.

Tu commences par faire une copie du fichier PDF à charger dans le UserForm, mais tu ne testes pas si ledit fichier existe déjà dans le dossier de destination, du coup ça plante s'il existe déjà. 🙁
 
Dernière édition:
2- Ma listview se décale sur la page à la première ouverture de la page
Lorsque je vais sur la page une première fois, je vois la Listview déjà déplacer pour un coin précisément dans l'angle gauche en haut.
Sur mon PC, aucune ListView ne change de place.

Remarque : quand tu parles d'un objet il faudrait au moins le nommer précisément (car là on ne sait pas de laquelle des trois ListView tu parles), voire dire dans quel Frame de quel UserForm, etc.
 
Dernière édition:
1- Copier et coller automatiquement une donnée par un bouton
A l'exemple du fichier joint, au niveau du Userform1, page1, j'ai fait le formulaire de la base de mes prestations et articles commercialisés qui seront obligatoirement enregistrés avant d'être choisi au niveau du UserForm3 pour la vente.
Jusque là c'est compréhensible.


Mais je veux qu'en allant directement sur le UserForm3, le bouton Plus d'option <<F6>> me permet d'accéder au UserForm1 pour l'enregistrement d'un nouvel élément (article ou prestation)
Apparemment, ça tu l'as déjà fait et ça fonctionne parfaitement bien.


et après cet enregistrement, l'on sélectionne la ligne dans la ListView1 et le boutton Copier du coté respectif va nous permettre de copier et coller automatiquement l'élément soit dans la ComboBox3 (si c'est un article) et ComboBox2 (si c'est une prestation).
Là en revanche ça ne va plus.
Tu dis qu'après avoir ajouté un nouvel élément, il faut sélectionner une ligne dans la ListView1 qui se trouve dans le UserForm3, puis de cliquer sur le bouton "Copier" qui se trouve dans le UserForm1. 🤪


Je pense qu'il faut que tu expliques mieux que ça avant qu'on puisse continuer.
 
Jusque là c'est compréhensible.



Apparemment, ça tu l'as déjà fait et ça fonctionne parfaitement bien.



Là en revanche ça ne va plus.
Tu dis qu'après avoir ajouté un nouvel élément, il faut sélectionner une ligne dans la ListView1 qui se trouve dans le UserForm3, puis de cliquer sur le bouton "Copier" qui se trouve dans le UserForm1. 🤪


Je pense qu'il faut que tu expliques mieux que ça avant qu'on puisse continuer.
Le nouvel élément enregistré serait soit un article ou une prestation au niveau du Userform1. Il faut donc cliquer sur cet éléments avant de cliquer sur le bouton Copier qui va nous renvoyer automatiquement dans la ComboBox concernée.

Par exemple, je clique sur le bouton Plus d'option qui me renvoie au UserForm1 et j'enregistre un article Routeur. Je sélectionne la ligne de cet article affichée dans la listview2 du Userform1. Ensuite je clique sur Copier au niveau de Frame3 Usuerform1. Cela me colle l'article de la ligne sélectionnée dans la ComboBox3 Userform3. Le bouton Plus d'option est activé mais je veux cela répondre lorsqu'on appuie la touche de fonction F6.
 
Par exemple, je clique sur le bouton Plus d'option qui me renvoie au UserForm1 et j'enregistre un article Routeur. Je sélectionne la ligne de cet article affichée dans la listview2 du Userform1. Ensuite je clique sur Copier au niveau de Frame3 Usuerform1. Cela me colle l'article de la ligne sélectionnée dans la ComboBox3 Userform3. Le bouton Plus d'option est activé mais je veux cela répondre lorsqu'on appuie la touche de fonction F6.
Là nous sommes d'accord. 👍
 
Bonjour,


C'est quoi cette fonction toute moisie "items_from_database_to_combobox_CATEGORIE" et les deux autres équivalentes ???
C'est encore cette débilité de ChatGPT qui a pondu ça ?
Et en plus là ça fait n'importe quoi !
Tu peux les supprimer. Ton classeur ne s'en portera que mieux. 😉


Je t'ai pourtant déjà montré précédemment comment remplacer ces trucs inutiles (et en plus faux ici) par une seule ligne de VBA qui elle au moins te donnera un résultat correcte. 🙁



Y a-t-il une raison particulière pour que tu utilises des ListView plutôt que des Listbox?
Je vois que la Listview a plus d'avantages que la listbox dont les en-têtes par exemple
 
Exactement mais puisque c'est avantageuse....
Franchement, je ne vois pas quels vrais avantages il peut y avoir à utiliser une ListView plutôt qu'une ListBox.
Peut-être la mise en couleur du texte de la ListView ? Mais ce n'est pas vraiment prévu pour ça, donc pas simple à résliser.

Et au niveau programmation c'est quand même pas mal plus complexe d'avoir une ListView au lieu d'une ListBox.
 
Dernière édition:
En MP j'ai demandé à notre ami Raoul pourquoi exactement il utilisait des ListView, plutôt que des ListBox qui me paraissent bien plus simples à programmer. Il m'a répondu que c'est ce que quelqu'un lui avait conseillé.

J'ai donc fait une recherche dans ses fils de discussion et j'ai été obligé de lire tous les messages d'un fil en particulier.
J'y ai donc vu qui lui avait proposé une ListView plutôt qu'une ListBox.
Mais j'y ai aussi découvert pas mal de bêtises dites au sujet des ListBox utilisant le RowSource.


Ci-dessous, lesdites erreurs.

Message #7 :
la méthode rowsource permet effectivement le header mais a un désavantage conséquent
c'est qu'une fois le rowsource renseigné (mano mano ou par vba ) la listbox ne peut plus être modifiée
donc (tri,additem,removeitem, etc...) on oublie
pour une listbox ou combobox qui permette un simple choix alors oui ça peut être un avantage c'est simple

Message #10 :
l'avantage de la propriété rowsource d'une listbox c'est que l'on peut avoir plus de 10 colonnes
le désavantage c'est que la liste est immodifiable et elle nous ajoute les entete

Message #17 :
Méthode Rowsource
bien pratique l'orsque l'on fait une liste fixe
une liste que ne changera pas
on ne peut pas ajouter, supprimer des items
option entête de colonne


Méthode Additem
mieux pour une liste qui peut évoluer
on peut ajouter, supprimer des items
pas d'entête de colonne

En réalité, même quand on utilise le RowSource d'une ListBox, on peut :
- ne pas afficher les en-têtes,
- modifier la liste,
- ajouter une ligne,
- supprimer une ligne,
- trier la liste.


Utiliser une ListBox avec son RowSource, ou une ListBox sans son RowSource, ou une ListView, c'est simplement un choix qui est effectué pour une raison ou pour une autre. Mais ce choix ne doit pas être éclairé par des propos qui ne le sont pas c'est-à-dire pour des raisons fausses. 😉
 
Bonjour
donc si je dis des conneries fait moi un exemple ou l'on peut modifier la liste avec additem ou encore un tri quand on est en mode rowsource
c'est quoi ta listbox un com special toofatboy?
moi aussi je viens là de lire des bêtises
En réalité, même quand on utilise le RowSource d'une ListBox, on peut :
- ne pas afficher les en-têtes, -->vrai
- modifier la liste,--> Faux
- ajouter une ligne,,--> Faux
- supprimer une ligne,,--> Faux
- trier la liste.,--> Faux

sauf utiliser des astuces et encore .....

du genre on change le rowsource ce qui revient au même qu'utiliser une variable tableau sauf que je n'ai pas les contraintes du rowsource

ça reviendrait a dire utiliser des listbox avec des techniques plus compliquées qu'une simple listbox avec additem et peut être un tri + un quicksort qui résoudrait les deux problèmes en un

mais de dire que avec rowsource la listbox est modifiable c'est pas une bêtise il faudrait trouver un autre mot je l'ai pas sous la main là

et pour info la décision de listview plutôt qu'un listbox n'est pas de mon fait ,d'ailleurs j'utilise aucun des deux perso sauf cas de force majeure

vraiment n’importe quoi surtout que nous avons trouvé des solutions pour faire repartir son fichier
et pour le coup avec des listviews qui fonctionnent maintenant
ca c'est productif

et non pas citer un membre a qui tu prend même pas la peine de répondre dans les discussions(ce qui est parfaitement ton droit) mais de ce fait on s'abstient de crier c'est des bêtise patricktoulon post X post Y
alors que visiblement tu ne sais même pas de quoi tu parles

et afin de clouer un bec bien trop bavard selon moi voici ce que donne L'iA(et j'ai demandé a plusieurs )
et toutes m'ont répondu a peu près la même chose
➡️ C’est une liaison directe avec une plage Excel.


✅ Avantages :​

  • Très simple à mettre en place.
  • Dynamique : si tu modifies les cellules de la plage, la ListBox se met à jour automatiquement (si elle est rechargée ou via recalcul).
  • Pas besoin de code VBA pour remplir la liste.

❌ Inconvénients :​

  • ⚠️ Pas de contrôle fin : tu ne peux pas trier, filtrer, reformater ou exclure certains éléments facilement.
  • Les noms de feuille/plage doivent être valides et figés.
  • Si la feuille est masquée, la RowSource peut planter.
  • Ne fonctionne pas bien quand la liste est générée à partir d’un tableau VBA (pas de liaison à une variable).
  • Pas très rapide sur de grandes plages.
  • Efface la liste si tu modifies la propriété par erreur.

👉 En résumé : pratique pour un petit tableau statique visible dans la feuille, mais limité pour des listes dynamiques ou filtrées.

ca reprend exactement points par points ce que j'ai dit
et pour copilot
re fit moi un topo rapide sur l'utilisation d'une liste box avec rowsouirce ou pas avantage et incovenients
Voici un petit topo clair et rapide sur l’utilisation d’une ListBox dans VBA (Excel, Access…) avec ou sans RowSource :

🧩 Option 1 : Utiliser RowSource

Principe : Tu relies directement la ListBox à une plage de cellules via la propriété RowSource, par exemple :
vb
Code:
ListBox1.RowSource = "Feuil1!A2:A10"
✅ Avantages :
  • Très simple à mettre en place.
  • Les données se mettent à jour automatiquement si la plage change.
  • Pas besoin de boucle ou de code pour remplir la liste.
❌ Inconvénients :
  • Moins flexible : tu ne peux pas filtrer ou trier facilement les données.
  • Si la plage est modifiée ou supprimée, ça peut générer des erreurs.
  • Pas idéal pour les données dynamiques ou calculées à la volée.

🛠️ Option 2 : Remplir avec AddItem ou List

Principe : Tu ajoutes les éléments manuellement via le code :
vb
Code:
ListBox1.AddItem "Option 1"
ListBox1.AddItem "Option 2"
Ou tu utilises .List pour charger un tableau :
vb
Code:
ListBox1.List = Array("Option 1", "Option 2", "Option 3")
✅ Avantages :
  • Très flexible : tu peux filtrer, trier, transformer les données avant de les afficher.
  • Pas dépendant d’une plage Excel.
  • Plus robuste pour les données dynamiques ou issues d’une base.
❌ Inconvénients :
  • Nécessite plus de code.
  • Moins automatique : il faut gérer les mises à jour soi-même.

🎯 En résumé​

MéthodeSimplicitéFlexibilitéRisque d’erreurIdéal pour...
RowSource✅ Facile❌ Faible⚠️ Plage modifiéeDonnées fixes
AddItem/List⚠️ Codée✅ Forte✅ ContrôléeDonnées dynamiques

et pour finir je dirais que c'est bien beau de dire mais non c'est pas comme ça c'est comme ceci apres la guerre
moi j'ai passé plus de 3 heures en ligne (partage d’écran)et au téléphone pour trouver une solution pour notre camarade
t'a fait quoi toi ?

fin de la discussion

Patrick
 
Dernière édition:
- 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

Retour