XL 2013 Bouton modifier avec la listview

freorcy@

XLDnaute Nouveau
Bonjour le forum.

J'espère que vous allez bien.
Je suis encore débutant sur excel VBA

J'ai un problème pour modifier les données sur la listview tout en cliquant sur le bouton "Modifier".

Cordialement,
 

vgendron

XLDnaute Barbatruc
une version dans laquelle j'ai "simplifié" le "initialize"

va voir comment ca fonctionne
PS: il faudra que les noms de colonne (feuilles excel) soient identiques à ce qui est demandé dans le code
 

Pièces jointes

  • SAU-SCHOOL - F Ver2.xlsm
    85.7 KB · Affichages: 2

vgendron

XLDnaute Barbatruc
En PJ une v3

les boutons "Ajouter - Modifier - Supprimer - Imprimer et quitter" sont codés

plusieurs évolutions à apporter
"remplacer les textbox Sexe et classe par des combo qui permettront de selectionner parmi une liste prédéfinie (la meme qui alimente les tables sur les feuilles)

j'ai chargé le combo "recherche" avec les matricules des élèves
lorsque tu selectionnes un matricule, les infos sont chargées

pour l'instant, j'ai désactivé les "bouton.locked".. qu'il vaut mieux remplacer par du bouton.enabled

PS: j'ai déplacé une grosse partie du code dans un module standard pour pouvoir tester un par un les codes de chaque bouton
et pour y voir plus clair
sur le USF, j'ai déplacé les frames qui contiennent les boutons en 2 3 4 5 exemplaires
 

Pièces jointes

  • SAU-SCHOOL - F Ver3.xlsm
    79.1 KB · Affichages: 2

freorcy@

XLDnaute Nouveau
Bonjour

J'espère vous vous portez bien ce jour.

Merci pour votre modification simplifiée.

Il y a le bouton modifier qui ne marche pas comme il faut.

Lorsque je modifie au niveau des combobox ou deux éléments successifs il ajoute au lieu de modifier la ligne ou la cellule concernée...

Cordialement,
 

vgendron

XLDnaute Barbatruc
Hello

le problème vient lorsqu'on selectionne une élève VIA le combo de recherche
(la ligne associée dans la listView n'est pas selectionnée

tu modifies les diffrents éléments
et le bouton "Modifier" regarde le numéro de ligne selectionnée dans la listview==> donc erreur
==> j'ai modifiré pour que le bouton regarde le numéro DANS le Combobox
ca fonctionne dans tous les cas puisque si tu selectionnes une ligne DANS la ListView, le combo est mis à jour
 

Pièces jointes

  • SAU-SCHOOL - F Ver5.xlsm
    97.1 KB · Affichages: 3

freorcy@

XLDnaute Nouveau
Merci, ça fonctionne parfaitement...

Je veux maintenant modifier l'en-tête de la listview "liste des élèves" au niveau des colonnes niveau et Apt. Physique les pivoter car les informations de Niveau se trouve dans la colonne Apt. Physique, vis versa.
 

vgendron

XLDnaute Barbatruc
Hello

Je ne suis plus chez moi pour le moment
mais si tu as bien regardé le code
pour charger une ListeView avec la macro"LoadListView"
tu appelles celle-ci avec la liste des colonnes que tu souhaites afficher dans la ListView==> C'est le deuxième paramètre==> il te suffit de mettre le nom des colonnes dans l'ordre que tu souhaites les voir
l'ordre réel des colonnes dans la table n'est pas important puisque avec l'utilisation de la syntaxe ".Listcolumns("NOMdeLAColonne").databodyrange(i) cela permet de récupérer la colonne quelque soit sa place dans la table
il faut juste t'assurer que le nom est bien écrit avec la meme syntaxe

ex:
dans la feuille excel: tu as une table t_Nomtab, avec les colonnes A B C = Nom / Prénom / Matricule

la syntaxe
Listcolumns("Prénom").databodyrange ===> pas besoin de dire que la colonne Prénom est en colonne B: il la trouve tout seul ==> tu peux donc déplacer Prénom en colonne C: ==> il trouvera toujours la bonne info

par contre
la syntaxe (que j'avais utilisée au début)
listcolumns(2).databodyrange ==> la.. il s'agit de la deuxième colonne de la table.. donc si tu déplaces la colonne.. il ne prendra plus la bonne info puisqu'il continue de prendre la deuxième colonne.
 

freorcy@

XLDnaute Nouveau
Bonjour

J'espère que vous êtes en parfaite santé ce jour.

Merci pour les orientations.
Lorsque je modifie l'en-tête comme je veux que ça soit c'est à dire les informations de Niveau dans sa colonne et Apt physique aussi mais les en-têtes se déplacent avec ces informations inversées...


Cordialement,
 

freorcy@

XLDnaute Nouveau
Bonjour

Oui, j'ai toujours un problème.

1-Les informations de la colonne"Niveau" se retrouvent dans la colonne Apt.physique sur la listview (Lvw_eleves_P2).

J'ai modifié l'emplacement des en-têtes mais la colonne se déplacer avec ses informations.

2-Je veux aussi programmer les boutons ajouter, modifier et supprimer sur les restes des pages.

Mais lorsque je déverrouille le bouton dans la macro, le code qui figure c'est l'ancien code de la page élève donc pas possibilité de programmer les boutons...
 

vgendron

XLDnaute Barbatruc
ok, il y a donc sans doute quelque chose qui échappe à l'un ou à l'autre

1)Dans la feuille Excel "Liste Identité élèves"
il y a un tableau de données présenté sous forme de table structurée, donc le nom est "t_ListeElèves"
cette table possède plusieurs colonnes: Matricule /Nom / Prénom / ... Note

2)==> l'ordre des colonnes n'a aucune importance pour la suite: Choisis-en un qui te convienne (à priori, l'ordre actuel semble le plus logique

3) Maintenant on passe à l'Userform
selon le multipage, il y a des ListView à remplir
le nombre de colonne à charger est "libre"
tu peux mettre tout ou partie de la table "T_ListeElèves"
et tu peux présenter les colonnes dans un orde différent de la table

4) comme il y avait plusieurs ListView à remplir, pour éviter d'avoir le quasi meme code autant de fois que de listview, j'ai fait UNE macro de remplissge: LoadListView
cette macro est appelée avec 3 paramètres
paramètre1: le nom de la listview à remplir
paramètre2: les colonnes à charger
paramètre3: la table structurée à utiliser comme source

le paramètre 2 est une chaine de caractères qui contient le nom des colonnes (tels qu'ils apparaissent dans la table) séparés par "/"
Col1/Col3/Col2/Col12
c'est donc dans ce paramètre 2 que tu choisis les colonnes à importer et l'ordre que tu souhaites voir dans la listview

5) la macro "UpdateAllListView"
permet de charger toutes les listview du multipage
elle appelle donc plusieurs fois la macro "LoadListiew"
elle permet en meme temps de charger les combo de recherche

6) une fois la listview chargée dans le formulaire
quand tu selectionnes une ligne (ou que tu choisis directement dans le combo de recherche
==> les différents TextBox sont chargés avec les éléments directement à partir de la table sur la feuille Excel, plutot que de la listview==> parce que le nombre de colonnes de la listview n'est pas forcément suffisant
ex: la table contient 11 colonnes
mais la listview pourrait n'être chargée qu'avec 10 colonnes (Matricule/Nom/Prénom/Date Naissance/Sexe/Nationalité/Classe/Niveau/Apt. Physique/Date inscription"
(c'est ce qui est fait sur les 3 listes view de la page 1
il faut donc aller chercher les infos à la source (la feuille)


7) quand tu enregistres (nouvelle ligne ou modification)

le contenu des texbox est enregistré dans les différentes colonnes de la table
Comme je te l'expliquais plus haut, j'utilise la syntaxe "Listcolumns("NomdeLaColonne") pour etre sur d'enregistrer dans la bonne colonne
imaginons que avec la table actuelle, tu fais un enregistrement.. tout se passe bien
puis tu as besoin/envie de modifier l'ordre des colonnes DANS la feuille Excel
tu refais une saisie: pas besoin de modifier le code pour enregisrer puisqu'il connait le nom de la colonne cible


En refaisant un dernier test, je viens de voir que pour Apt.Phys et niveau, le numéro des TextBox était inversé (d'ou l'intéret d'avoir des noms explicite plutot que des numéros)
et que le formatage des dates n'était pas bon ===> Corrgié dans la version ci jointe



pour le codage des boutons sur les autres pages
il faut pouvoir distinguer sur quelle page on est, et donc coder la bonne chose (si je comprend bien..selon la page, on intervient pas sur la meme listview..==> c'est donc sans doute pour ca qu'il y avait autant de boutons modifier ajouter;....

j'ai commencé à apporter une modif
 

Pièces jointes

  • SAU-SCHOOL - F Ver5.xlsm
    98.4 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i