ESSAIS -MENUS : Feuille Accueil produits
Résolu
BUDGETS
Messages postés
1607
Date d'inscription
Statut
Membre
Dernière intervention
-
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour :
Dans le code de la feuille Accueil produits, procédure Worksheet_Change :
cboModifierproduit.additem Elé.offset(0,-3)
0 = chiffre représentant une colonne ? En réalité, c'est une ligne.
-3 = chiffre représentant une ligne ? En réalité, c'est une colonne.Pourquoi précédé du signe moins ? Reculer de trois lignes ou avancer de trois lignes sur la droite ou la gauche ? Par rapport à quelle ligne de départ ? En réalité, il reste sur la même ligne et recule de trois colonnes vers la gauche
cboModifierProduits.list(activesheet.cboModifierProduit.listCount -1, 1)=Ele.row
-1 Pourquoi précédé du signe moins ? Reculer ou avancer d'une colonne sur la droite ou la gauche ? Par rapport à quelle colonne ?
1 il s'agit d'une ligne ? Mais de laquelle ?
Pour ce qui est de la suppression, ce sera les mêmes considérations ?
Que représente exactement Elé qui est déclaré comme de type range ? Pour moi, tout est basé sur la feuille Produits, TableProduits. D'avance merci pour votre aide. À mon avis, tout se joue sur les colonnes Nom catégorie et Code produit.
https://www.cjoint.com/c/KDxqsFursxo
Dans le code de la feuille Accueil produits, procédure Worksheet_Change :
cboModifierproduit.additem Elé.offset(0,-3)
0 = chiffre représentant une colonne ? En réalité, c'est une ligne.
-3 = chiffre représentant une ligne ? En réalité, c'est une colonne.Pourquoi précédé du signe moins ? Reculer de trois lignes ou avancer de trois lignes sur la droite ou la gauche ? Par rapport à quelle ligne de départ ? En réalité, il reste sur la même ligne et recule de trois colonnes vers la gauche
cboModifierProduits.list(activesheet.cboModifierProduit.listCount -1, 1)=Ele.row
-1 Pourquoi précédé du signe moins ? Reculer ou avancer d'une colonne sur la droite ou la gauche ? Par rapport à quelle colonne ?
1 il s'agit d'une ligne ? Mais de laquelle ?
Pour ce qui est de la suppression, ce sera les mêmes considérations ?
Que représente exactement Elé qui est déclaré comme de type range ? Pour moi, tout est basé sur la feuille Produits, TableProduits. D'avance merci pour votre aide. À mon avis, tout se joue sur les colonnes Nom catégorie et Code produit.
https://www.cjoint.com/c/KDxqsFursxo
A voir également:
- ESSAIS -MENUS : Feuille Accueil produits
- Telephone bloqué apres 3 essais - Guide
- Barre des menus windows 11 - Guide
- Barre des menus windows 10 - Guide
- Excel menus déroulants - Guide
- Menus windows - Guide
3 réponses
Bonjour,
En principe ‘Ele’ est une variable qui reçoit la valeur de la colonne des catégories de votre table Produits utilisée dans la boucle (For Each Ele ………. Next Ele)
Au fait c'est quoi le problème?
En principe ‘Ele’ est une variable qui reçoit la valeur de la colonne des catégories de votre table Produits utilisée dans la boucle (For Each Ele ………. Next Ele)
Au fait c'est quoi le problème?
cboModifierProduit.List(ActiveSheet.cboModifierProduit.ListCount - 1, 1) = Ele.Row
Ici on ajoute Ele.Row qui est le numéro de la ligne dans la feuille contenant le tableau de l'élément en train d'être ajouté à la liste déroulante.
La liste déroulante contient 2 colonnes, la colonne 0 dans laquelle se situent les éléments "DMR01-1" etc... et la colonne 1 dans laquelle doivent se situer les numéros de ligne de ces éléments. Le 1 dans cboModifierProduit.List(ActiveSheet.cboModifierProduit.ListCount - 1, 1) signifie deuxième colonne de la liste.
.ListCount compte le nombre d'éléments dans la liste. Lorsque le premier élément est ajouté, .ListCount renvoie donc 1. Sauf que dans la liste, le premier élément est 0, le deuxième est 1 etc... Donc pour ajouter le premier numéro de ligne (Elo.Row) au bon endroit, on doit l'ajouter dans la première ligne et deuxième colonne de la liste, ListCount vaut 1 mais ListCount -1 vaudra 0 c'est ce qui nous intéresse pour la ligne de la liste. Et c'est dans la deuxième colonne de cette liste ce qui donne .List(.ListCount - 1, 1)
Je sais pas si je suis clair :D
Ici on ajoute Ele.Row qui est le numéro de la ligne dans la feuille contenant le tableau de l'élément en train d'être ajouté à la liste déroulante.
La liste déroulante contient 2 colonnes, la colonne 0 dans laquelle se situent les éléments "DMR01-1" etc... et la colonne 1 dans laquelle doivent se situer les numéros de ligne de ces éléments. Le 1 dans cboModifierProduit.List(ActiveSheet.cboModifierProduit.ListCount - 1, 1) signifie deuxième colonne de la liste.
.ListCount compte le nombre d'éléments dans la liste. Lorsque le premier élément est ajouté, .ListCount renvoie donc 1. Sauf que dans la liste, le premier élément est 0, le deuxième est 1 etc... Donc pour ajouter le premier numéro de ligne (Elo.Row) au bon endroit, on doit l'ajouter dans la première ligne et deuxième colonne de la liste, ListCount vaut 1 mais ListCount -1 vaudra 0 c'est ce qui nous intéresse pour la ligne de la liste. Et c'est dans la deuxième colonne de cette liste ce qui donne .List(.ListCount - 1, 1)
Je sais pas si je suis clair :D
J'ai modifié les commentaires pour les combo boxes Modifier et supprimer du code de la feuille Accueil produits. Je pense avoir respecté tant tes indications que celles de Le Pingou. Après confirmation de vous deux ou de l'un d'entre vous, je créerai un nouveau forum concernant ThisWorkbook.
https://www.cjoint.com/c/KDysjbQdWqo
https://www.cjoint.com/c/KDysjbQdWqo
Le problème est de savoir à quoi correspondent les chiffres, pourquoi certains sont précédés du signe moins.
J'ai déjà trouvé que le premier chiffre correspond à une ligne, le second à une colonne. Chiffre colonne précédé d'un moins : reculer de trois colonnes vers la gauche (-3) à partir de la colonne Nom catégorie (nom comprise dans le décompte). Chiffre ligne précédé d'un moins : monter d'une ligne vers le haut (-1). Si pour la colonne j'ai compris le signe moins, pour la ligne, je n'ai pas compris car on aboutit sur la ligne du nom des colonnes. Tout se passe à partir de la feuille Produits, TableProduits, colonne Nom catégorie. Partie ajouter le numéro de ligne (-1, 1) : pour cette instruction, je n'ai pas compris. J'ai trouvé tout cela, à confirmer ou à infirmer, grâce à la propriété de range offset.
For Each Ele In Application.Range("TableProduits[Nom catégorie]")
Ele va parcourir le tableau "TableProduits" ligne par ligne, dans la colonne "Nom catégorie"
Ele va donc prendre les valeurs "DMR" puis "DS" etc....
cboModifierProduit.AddItem Ele.Offset(0, -3)
"cboModifierProduit" est le nom de la première liste déroulante sous "Choix Produit"
"AddItem" : cela va ajouter les éléments à la liste
AddItem.Ele : cela précise que l'élément à ajouter correspond à l'élément contenu dans Ele. Seulement dans la liste on ne veut pas ajouter "DMR" "DS" etc... On veut ajouter les éléments de la colonne "Intitulé" du tableau. Cette colonne se situe 3 colonnes à gauche de la colonne actuelle "Nom catégorie" (d'où le -3) et nous de devons rester sur la même ligne (d'où le 0). Finalement on obtient Offset(0, -3) qui signifie décaler de trois colonnes vers la gauche depuis la colonne "Nom catégorie" mais rester sur la même ligne.
et l'instruction ajouter le numéro de ligne qui suit le next ele, que signifie-t-elle ? J'avoue que je ne l'ai pas comprise.
Voir ma deuxième réponse ci-dessous.
Jkrplz