XL 2016 problème VBA

Pascalod

XLDnaute Nouveau
Bonjour à tous,

Je commence doucement dans le VBA (ce que je trouve magnifique) mais j'ai un petit soucis.
J'ai suivi un tuto pour une tableau, j'ai modifié quelques petit truc et tout fonctionnne.
le soucis, même avec le tuto d'origine est que dès qu'il y a une suppession de ligne, tout ce qui ce trouve au dessus de la ligne modifier reste modifiable , mais en dessous de la ligne modifier c'est plus possible. je me rend conte que lorsqu'il y a une suppression de ligne, la numerotation n'est pas automatique. je joins le tableau c'est plus simple est-ce que quelqu'un pourrait me venir en aide?
Si en plus cette personne pourrait m'expliquer comment mettre un bouton quitter le formulaire et revenir sur la feuille exel et un autre bouton quitter et enregister.

D'avance un grand merci.
 

Pièces jointes

  • List Fournisseurs-Leveranciers contact_V2.xlsm
    81.7 KB · Affichages: 8

youky(BJ)

XLDnaute Barbatruc
Sur les conseils de vgendron,
Fait un tableau
Plus besoin s'occuper des formules.
J'ai supprimé le bouton modifier je fais tout dans Valider.
J'ai mis mes couleurs préférées en user pour le fun . . . .hihi !
Je viens de modifier car il y avait des données en ligne987
Bruno
 

Pièces jointes

  • List Fournisseurs-Leveranciers contact_V2.xlsm
    35.4 KB · Affichages: 4
Dernière édition:

vgendron

XLDnaute Barbatruc
Autres suggestions pour améliorer
quand tu fais une boucle sur des colonnes, utilises plutot l'indice j
i étant pour boucler sur les lignes
ca évite de se mélanger et de se tromper dans les limites max de boucles

de ce que j'ai vu, tu ne charges pas la Listview correctement..il t'en manque==> d'ou un bug quand tu veux remplir tes texbox
j'ai modifié quelques macros:
userform_initialize
affich_col
remplir_lvw
ListView1_itemclick
combo_change

tout comme tu as nommé les textbox avec un indice pour pouvoir boucler dessus, il est utilie de nommer les différents controles pour retrouver facilement à quoi ils servent

sans voir le formulaire, dans ton code, CommandButton1_click, je ne sais pas à quel bouton ca correspond, donc je ne sais pas ce qu'il est censé faire

tandis que
CBn_Quitter_Click... ca parle de lui meme
 

Pièces jointes

  • List Fournisseurs-Leveranciers contact_V2.xlsm
    34.4 KB · Affichages: 5

Pascalod

XLDnaute Nouveau
Sur les conseils de vgendron,
Fait un tableau
Plus besoin s'occuper des formules.
J'ai supprimé le bouton modifier je fais tout dans Valider.
J'ai mis mes couleurs préférées en user pour le fun . . . .hihi !
Je viens de modifier car il y avait des données en ligne987
Bruno
Bonjour Bruno, un grand merci, le tableau fonctionne a merveille,est-il possible d'avoir des explications sur tes modifications stp et aussi sur le tableau, désoler mais j'apprend et j'aimerais comprendre pour mieux avancer.
cordialement
Pascal
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
Pour créer un Tableau rien de plus facile.
J'ai selectionné toutes les entêtes et jusqu'a la ligne12 et en menu>insertion>Tableau
On peux choisir parmis les modèles proposés et c'est tout.
En vba
J'ai mis la propriété Enabled =false du Tbox1 cela empêche de le modifier à la main
Changé le code en Supprime
La méthode avec Set est trop gourmande en ressource car elle garde tout en mémoire
lg = Application.Match(Val(TBox1), [A:A], 0)
'''''''''lg renvoi le N° ligne si trouvé, sinon il renvoi error donc non numeric
If IsNumeric(lg) Then Rows(lg).Delete

A plusieurs endroits j'ai remplacé 1 par 2 dans les For i=2 to 21
Le Tbox1 est traité à part
En macro Valider
ci dessous si la valeur de Tbox1 est plus petite que la derniere ligne+1
on est alors dans une ligne déja faite donc modif
If Val(TBox1) < Feuil1.[B65000].End(3).Row + 1 Then . . . . .

Bon le code parfois peut être amélioré car pas utile de recharger complètement la listview.
Bruno
 

Pascalod

XLDnaute Nouveau
Encore une petite question svp, dans la liste de recherche( combo entete), j'aimerai ne pas tout voir mais juste societe , nom, prenom , j'ai tester avec array("societe","nom","prenom") mais sans succès.
Autres suggestions pour améliorer
quand tu fais une boucle sur des colonnes, utilises plutot l'indice j
i étant pour boucler sur les lignes
ca évite de se mélanger et de se tromper dans les limites max de boucles

de ce que j'ai vu, tu ne charges pas la Listview correctement..il t'en manque==> d'ou un bug quand tu veux remplir tes texbox
j'ai modifié quelques macros:
userform_initialize
affich_col
remplir_lvw
ListView1_itemclick
combo_change

tout comme tu as nommé les textbox avec un indice pour pouvoir boucler dessus, il est utilie de nommer les différents controles pour retrouver facilement à quoi ils servent

sans voir le formulaire, dans ton code, CommandButton1_click, je ne sais pas à quel bouton ca correspond, donc je ne sais pas ce qu'il est censé faire

tandis que
CBn_Quitter_Click... ca parle de lui meme
Bonjour vgendron,
merci pour ton aide, les infos sont bien, juste un soucis, dans la fonction recherche, je choisis via la list deroulante , je vais dans le texbox a coté et je remplis , je clique pour selectionner ensuite j'ai erreur execution 35600: ( Controls("TBox" & j) = ListView1.ListItems(lg).ListSubItems(j - 1).Text)
tu peux regarder et m'expliquer stp
Cordialement
Pascal
 

Pascalod

XLDnaute Nouveau
Bonjour,
Pour créer un Tableau rien de plus facile.
J'ai selectionné toutes les entêtes et jusqu'a la ligne12 et en menu>insertion>Tableau
On peux choisir parmis les modèles proposés et c'est tout.
En vba
J'ai mis la propriété Enabled =false du Tbox1 cela empêche de le modifier à la main
Changé le code en Supprime
La méthode avec Set est trop gourmande en ressource car elle garde tout en mémoire
lg = Application.Match(Val(TBox1), [A:A], 0)
'''''''''lg renvoi le N° ligne si trouvé, sinon il renvoi error donc non numeric
If IsNumeric(lg) Then Rows(lg).Delete

A plusieurs endroits j'ai remplacé 1 par 2 dans les For i=2 to 21
Le Tbox1 est traité à part
En macro Valider
ci dessous si la valeur de Tbox1 est plus petite que la derniere ligne+1
on est alors dans une ligne déja faite donc modif
If Val(TBox1) < Feuil1.[B65000].End(3).Row + 1 Then . . . . .

Bon le code parfois peut être amélioré car pas utile de recharger complètement la listview.
Bruno
Bonjour Bruno,
Petit soucis encore, recherche et modifier fonctionne tres bien, juste que je n'arrive pas a ajouter un contact supplementaire (?) et lorsque je modifier un autre aucun soucis, je fais raz pour ajouter un contact et c'est le dernier contact modifier qui est prit en compte? pour le reste nikkel même les couleurs
Pascal
 

vgendron

XLDnaute Barbatruc
Hello

en PJ une version commentée
à mon avis, au final, il faudrait supprimer le combo qui reste masqué et qui est source de tes problèmes: De ce que je vois; il ne sert que d'intermédiaire..
 

Pièces jointes

  • List Fournisseurs-Leveranciers contact_V3.xlsm
    44.9 KB · Affichages: 11

Statistiques des forums

Discussions
312 189
Messages
2 086 031
Membres
103 101
dernier inscrit
CyberAlex93