VBA - Ajout et Modification de ligne via listbox Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
k
klaaus
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 février 2015
Version d'Excel : Excel 2016

Message par klaaus » 16 novembre 2017, 19:09

Bonjour,
J'ai commencé la création d'un logiciel pour mon entreprise avec excel en VBA et j'aimerais savoir comment faire pour modifier une ligne de la listbox ou bien en créer une nouvelle ? J'ai ma listbox (UserForm "ListeClient") et le formulaire que je veux utiliser pour la création d'une nouvelle ligne (UserForm "NouveauClient"). La contrainte supplémentaire est que lors de la création d'une nouvelle ligne, par le biais du formulaire, j'aimerais que dans les colonnes A; N et O les formules soient reprises et dans les colonnes B et I les listes déroulantes.
SI jamais vous avez la solution serait il possible de m'expliquer comment faire :) ?
Je vous joins le fichier !
Merci d'avance !
Liste Client.xlsm
(102.61 Kio) Téléchargé 48 fois
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'692
Appréciations reçues : 227
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 16 novembre 2017, 21:01

Bonsoir,

Comme tu as créé un objet Tableau, tout ajout de ligne recopie automatiquement formules et listes de validation.
Pour créer une nouvelle ligne, il suffit de se positionner sur la dernière cellule en bas à droite du tableau et de presser la touche "TAB"

Au niveau de VBA, il faut utiliser cet objet. Ci-joint exemple à compléter
Liste Client1.xlsm
(80.59 Kio) Téléchargé 57 fois
k
klaaus
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 février 2015
Version d'Excel : Excel 2016

Message par klaaus » 17 novembre 2017, 10:22

Merci beaucoup ! Par contre j'ai un petit problème. Sur le fichier que tu m'as passé, mon userform "ListeClient" ne fonctionne plus; et lorsque je copie la formule de l'userform 'NouveauClient" sur mon fichier original, une erreur s'affiche :/
Je remet le lien du fichier original où j'ai "copier-coller" ta formule (et compléter pour que toutes les valeurs s'ajoute/se modifie dans mon tableau)
J'aimerais aussi savoir si du coup, lorsque que l'on est sur la page NouveauClient il était possible de reprendre toutes les informations de la ligne et les mettre sur le formulaire, lorsque l'on choisi un numéro de client ou une entreprise ?
Merci d'avance !
Liste Client.xlsm
(103.95 Kio) Téléchargé 25 fois
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'692
Appréciations reçues : 227
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 17 novembre 2017, 12:17

Bonjour,

ci-jointe proposition
Liste Client2.xlsm
(106.99 Kio) Téléchargé 80 fois
k
klaaus
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 février 2015
Version d'Excel : Excel 2016

Message par klaaus » 17 novembre 2017, 13:20

C'est exactement ce que je cherche ! Le seul problème maintenant (et après je pense que ce sera bon, j'espère !) c'est que lorsque je veux ajouter un nouveau client, le fichier bug et excel se ferme tout seul :/
k
klaaus
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 février 2015
Version d'Excel : Excel 2016

Message par klaaus » 17 novembre 2017, 13:37

Je viens de vérifier, en fait ton fichier marche très bien. Le problème se créé lorsque je veux ajouter le bouton sur l'userform "ListeClient", pour ajouter ou modifier les clients. Pour cela je veux que le bouton ouvre l'userform "NouveauClient", mais lorsque que j'ajoute le code NouveauClient.Show, tout bug lorsque je clique sur le bouton créé. Je vous met ici le lien du fichier du coup.
Merci d'avance :)
Liste Client2.xlsm
(107.01 Kio) Téléchargé 42 fois
k
klaaus
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 février 2015
Version d'Excel : Excel 2016

Message par klaaus » 17 novembre 2017, 14:04

Si ça peut vous aider pour vous orienter, j'ai essayer d'attribuer au second bouton accès dossier, qui n'est relié à rien pour l'instant, l'accès vers l'Userform "NouveauClient" et aucun problème. C'est dès lors que je créé un bouton sur l'UserForm "ListeClient", avec le même code, qu'un bug se créé. Je met le fichier en pièce jointe du coup.
Je précise aussi que lorsque que je lance l'UserForm "NouveauClient", tout se passe sans problème, c'est seulement lorsque je passe par l'Userform "ListeClient", que je clique sur le bouton pour ouvrir "NouveauClient" et que je veux créer un nouveau client, que l'erreur se produit.
Liste Client2 (4).xlsm
(129.46 Kio) Téléchargé 68 fois
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'692
Appréciations reçues : 227
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 17 novembre 2017, 14:51

Votre problème vient de cette instruction :
ListBox1.RowSource = Feuil1.Range("'Liste Client'!$Q$2:$AE$8").Address(external:=True)
Votre ListBox s'affiche en fait via un lien avec votre tableau. Excel est très perturbé quand ce lien est mis en cause par l'ajout d'un nouveau client.

Il ne faut donc pas utiliser un lien mais charger les valeurs comme ceci
    With Sheets("Liste Client").ListObjects(1)
        Me.ListBox1.List = .DataBodyRange.Value
    End With


Je vous joins dans quelques instants la modification correspondante.
t
thebenoit59
Membre fidèle
Membre fidèle
Messages : 436
Appréciations reçues : 10
Inscrit le : 21 juin 2016
Version d'Excel : 2016

Message par thebenoit59 » 17 novembre 2017, 15:34

Bonjour thev.
Bonjour klaaus.

Une autre façon de travailler.
Avec des dictionnaires pour plus d'aisances.
Le filtre sur ton listbox fonctionne également différemment.
Liste Client2 %284%29.xlsm
(130.32 Kio) Téléchargé 147 fois
k
klaaus
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 20 février 2015
Version d'Excel : Excel 2016

Message par klaaus » 17 novembre 2017, 15:53

Merci Benoit pour ton idée. Malheureusement, je veux vraiment avoir un "logiciel" complet et donc une fois fini, ne plus passer par le classeur. Je vais essayer d'appliquer la méthode de Thev qui correpond mieux à ceux que je veux faire. Je n'ai cependant aucun doute sur le fait que ta méthode pourra convenir à d'autres personnes et donc les aider :)
Encore une fois, merci tout de même de m'avoir proposer ta méthode qui fonctionne tout aussi bien !
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message