XL 2010 Mon fichier MENUS.xlsm : feuille mode d'emploi

BUDGETS

XLDnaute Impliqué
Bonsoir,

L'auteur du programme a passé beaucoup de temps avec moi et là il a beaucoup de retard à rattraper pour s'occuper de ses expo, donc il est moins disponible, ce qui est très compréhensible. Je recherche donc quelqu'un qui pourrait m'expliquer une ou plusieurs instructions. Il n'y en a pas beaucoup, autant que je sache. Si quelqu'un se sent capable de m'apporter son aide, ce dont je le remercie d'avance, faites-moi le savoir, je joindrais alors le fichier concerné.
Bonnes fin de soirée, nuit et continuation à toutes et à tous. Prenez bien soin de vous. Très cordialement.
 

BUDGETS

XLDnaute Impliqué
Bonjour Christian, Hervé,



je te propose de mettre dans cette conversation toutes ces quelques instructions ; si j'en ai le temps, je les commenterai ; sinon, un autre contributeur pourra le faire à ma place. :)

je dois arrêter mon PC, alors je te lirai ce soir ou demain. ;)

soan
Bonjour SOAN, Bonjour Hervé62

Compte tenu de ta réponse dans le dernier message de TextboxNuméroCréation, j'ai retrouvé les deux messages concernés (67 et 72). Ci-dessous les deux instructions concernées et mon commentaire que je te demande de confirmer ou d'infirmer ou de modifier en conséquence.

A) S1 = T(N - 2): S2 = "[" & S1 & "]": Mid$(S2, 2, 1) = "C"
cbCodArt.List = Range(S1 & S2).Value

B) S1 représente LDW. T, qui était une variable sans type, donc de type Variant, devient ici un tableau (array = tableau) : ce tableau contient la liste des noms de tous les tableaux structurés qui seront utiles pour créer la liste des codes articles et pour les noms articles associés à ces codes articles. N représente la liste de la zone de liste modifiable CodCtg. Si dans LDW (S1), on remplace le L par C, S1 devient S2. Dans "[" & S1 & "]", quelle est l'utilité, la fonction de l'esperluette & ? Mid$(S2,2,1) "C" : que signifie, quelle est la fonction de cette instruction ? Désolé Soan, dans les deux messages 67 et 72, je n'ai rien trouvé concernant & S1 ni Mid$.
cbCodArt.list = range(S1 & S2).value : dans la zone de liste modifiable CodArt on choisit (ce n'est pas peut-être le terme approprié) le S1 et le S2.
Pour l'instant, ce sont les instructions qui me posent problème.
 

soan

XLDnaute Barbatruc
Bonjour Christian, Hervé,

T, qui était une variable sans type, donc de type Variant, devient ici un tableau (array = tableau) : ce tableau contient la liste des noms de tous les tableaux structurés qui seront utiles pour créer la liste des codes articles et pour les noms articles associés à ces codes articles.​

c'est bien c'que j'avais écrit, mais c'était pour cette instruction (car y'a le mot-clé Array, c'que j'avais bien précisé) :
T = Array("LDW", "LLMR", "LLSLM", "LLSMJ", "LLSV", "LLWS", _ "LLWD", "LVMR", "LVMW", "LVS")

pas pour celle-ci : s1 = T(n - 2)



pour : s1 = T(n - 2)

le commentaire VBA que tu peux mettre est :

on met dans s1 l'élément du tableau T dont l'indice est n-2

ou si tu préfères :

on met dans s1 l'élément de T dont la ligne du tableau est n-2.

mais perso, quand j'vois : s1 = T(n - 2)

ce que fait cette instruction est tellement évident que j'met tout simplement aucun commentaire ! 😁 😄 à preuve : y'a même pas d'mot-clé VBA ! y'a juste un signe égal « = » et un signe moins « - » !​



ce tableau contient la liste des noms de tous les tableaux structurés qui seront utiles pour créer la liste des codes articles et pour les noms articles associés à ces codes articles.

exact, et c'était aussi c'que j'avais écrit pour la même instruction de tout à l'heure :

T = Array("LDW", "LLMR", "LLSLM", "LLSMJ", "LLSV", "LLWS", _ "LLWD", "LVMR", "LVMW", "LVS")

rappel : y'avait ce test : If n < 2 Then .. Exit Sub ➯ dessous, n minimum = 2

alors on voit bien que pour n = 2 (valeur minimum) :​

n - 2 = 2 - 2 = 0 ; donc T(0) = "LDW"



n représente la liste de la zone de liste modifiable CodCtg.

pas du tout ! n, ce n'est pas les items de la liste CodCtg, c'est l'index de cette liste ! -1 ➯ pas d'item sélectionné ; 0 = 1er item de la liste ; 1 = 2ème item de la liste ; etc...​



quelle est l'utilité, la fonction de l'esperluette & ?

dans une instruction Dim, & en tant que caractère de type est idem que As Long ; et ça, je sais que maint'nant, tu l'as bien compris ; je l'ai écrit juste pour dire que si & n'est pas dans un Dim alors il sert pour la concaténation : ça permet de réunir des éléments ; exemple : si s1 contient "para" et si s2 contient "pluie" alors MsgBox s1 & s2 affiche "parapluie".​



Mid$(s2, 2, 1) = "C"

* la chaîne de caractères concernée est s2, par exemple : "[LDW]"

* Mid est l'abréviation de Middle = milieu

* le milieu de s2, à partir du 2ème caractère, et pour une longueur de 1 caractère, est L (car le 1er caractère est le crochet gauche « [ »)

* donc avec 2, c'est bien ce caractère L que je remplace par C avec : = "C"

note-le bien, et ne l'oublie pas, car je ne le répéterai pas ! note aussi le n° de ce post, pour y revenir !



petit complément :

* Left$(s2, n) permet de prendre les n caractères de gauche de s2

* Right$(s2, n) permet de prendre les n caractères de droite de s2

* Mid$(s2...) permet de prendre les n caractères du milieu de s2

mais seul Mid$() a la particularité de pouvoir apparaître à gauche du signe « = » ; alors qu'à l'inverse, les 3 peuvent apparaître à droite du signe « = » ; voir l'Aide VBA sur les 3 mots-clés pour plus d'infos ; normalement, c'est des bases de VBA qu'Hervé et toi vous devriez déjà connaître !

le rôle d'un contributeur est d'aider pour des exos Excel, pas de donner des cours gratuits de VBA ! (ni même des cours payants !) ; suggestion : regardez dans le menu Tutos ces 3 items : EXCEL ; FORMULES ET FONCTIONS ; VBA ; et aussi : David Aubert a fait tout exprès des vidéos pour enseigner les bases d'Excel et de VBA dans le même menus TUTOS ! (il suffit de cliquer sur le mot "Tutos" pour les voir)



cbCodArt.List = Range(s1 & s2).Value

* s1 : "LDW"

* s2 : "[CDW]"

* s1 & s2 : "parapluie" ... ah non, c'est : "LDW[CDW]" ; mais c'est pareil : c'est juste une concaténation !

* donc avec Range(s1 & s2).Value = Range("LDW[CDW]").Value c'est bien c'qui sert pour créer la liste de la ComboBox cbCodArt.​

soan
 
Dernière édition:

BUDGETS

XLDnaute Impliqué
Bonjour Christian, Hervé,



c'est bien c'que j'avais écrit, mais c'était pour cette instruction (car y'a le mot-clé Array, c'que j'avais bien précisé) :
T = Array("LDW", "LLMR", "LLSLM", "LLSMJ", "LLSV", "LLWS", _ "LLWD", "LVMR", "LVMW", "LVS")

pas pour celle-ci : s1 = T(n - 2)



pour : s1 = T(n - 2)

le commentaire VBA que tu peux mettre est :

on met dans s1 l'élément du tableau T dont l'indice est n-2

ou si tu préfères :

on met dans s1 l'élément de T dont la ligne du tableau est n-2.

mais perso, quand j'vois : s1 = T(n - 2)

ce que fait cette instruction est tellement évident que j'met tout simplement aucun commentaire ! 😁 😄 à preuve : y'a même pas d'mot-clé VBA ! y'a juste un signe égal « = » et un signe moins « - » !​





exact, et c'était aussi c'que j'avais écrit pour la même instruction de tout à l'heure :

T = Array("LDW", "LLMR", "LLSLM", "LLSMJ", "LLSV", "LLWS", _ "LLWD", "LVMR", "LVMW", "LVS")

rappel : y'avait ce test : If n < 2 Then .. Exit Sub ➯ dessous, n minimum = 2

alors on voit bien que pour n = 2 (valeur minimum) :​

n - 2 = 2 - 2 = 0 ; donc T(0) = "LDW"





pas du tout ! n, ce n'est pas les items de la liste CodCtg, c'est l'index de cette liste ! -1 ➯ pas d'item sélectionné ; 0 = 1er item de la liste ; 1 = 2ème item de la liste ; etc...​





dans une instruction Dim, & en tant que caractère de type est idem que As Long ; et ça, je sais que maint'nant, tu l'as bien compris ; je l'ai écrit juste pour dire que si & n'est pas dans un Dim alors il sert pour la concaténation : ça permet de réunir des éléments ; exemple : si s1 contient "para" et si s2 contient "pluie" alors MsgBox s1 & s2 affiche "parapluie".​



Mid$(s2, 2, 1) = "C"

* la chaîne de caractères concernée est s2, par exemple : "[LDW]"

* Mid est l'abréviation de Middle = milieu

* le milieu de s2, à partir du 2ème caractère, et pour une longueur de 1 caractère, est L (car le 1er caractère est le crochet gauche « [ »)

* donc avec 2, c'est bien ce caractère L que je remplace par C avec : = "C"

note-le bien, et ne l'oublie pas, car je ne le répéterai pas ! note aussi le n° de ce post, pour y revenir !



petit complément :

* Left$(s2, n) permet de prendre les n caractères de gauche de s2

* Right$(s2, n) permet de prendre les n caractères de droite de s2

* Mid$(s2...) permet de prendre les n caractères du milieu de s2

mais seul Mid$() a la particularité de pouvoir apparaître à gauche du signe « = » ; alors qu'à l'inverse, les 3 peuvent apparaître à droite du signe « = » ; voir l'Aide VBA sur les 3 mots-clés pour plus d'infos ; normalement, c'est des bases de VBA qu'Hervé et toi vous devriez déjà connaître !

le rôle d'un contributeur est d'aider pour des exos Excel, pas de donner des cours gratuits de VBA ! (ni même des cours payants !) ; suggestion : regardez dans le menu Tutos ces 3 items : EXCEL ; FORMULES ET FONCTIONS ; VBA ; et aussi : David Aubert a fait tout exprès des vidéos pour enseigner les bases d'Excel et de VBA dans le même menus TUTOS ! (il suffit de cliquer sur le mot "Tutos" pour les voir)



cbCodArt.List = Range(s1 & s2).Value

* s1 : "LDW"

* s2 : "[CDW]"

* s1 & s2 : "parapluie" ... ah non, c'est : "LDW[CDW]" ; mais c'est pareil : c'est juste une concaténation !

* donc avec Range(s1 & s2).Value = Range("LDW[CDW]").Value c'est bien c'qui sert pour créer la liste de la ComboBox cbCodArt.​

soan
Bonsoir SOAN,

Je reviens vers toi pour avoir des précisions.
1) "LgArt (numéro de ligne de l'article à rechercher et à trouver ?), b : représente les articles ? si b = 0 (false) article non trouvé; b = -1 (True) article trouvé; LgArt contient le numéro de ligne de l'article trouvé, ce numéro étant un numéro de ligne de la feuille de calcul et non pas un numéro de ligne du tableau structuré. Quand tu as écrit cela, certainement que c'était valable pour l'exemple donné. Maintenant que le tableau structure est rempli en totalité, ce ne doit plus être valable. Alors quelle différence fais-tu entre une tableau structuré et une feuille de calcul ? J'ai essayé, vainement, de comprendre ton lgart et ton B. Si tu peux joindre un exemple, même court, ce serait le nirvana.
2) Si on ne fait qu'un seul UserForm au lieu de deux, des instructions contenues dans l'un ou l'autre userform peuvent-elles supprimées ou, éventuellement être changées de place ?
D'avance merci pour ta réponse.
 

Pièces jointes

  • MENUS.xlsm
    97.3 KB · Affichages: 7
Dernière édition:

herve62

XLDnaute Barbatruc
Bonsoir Slt Christian
Ton sujet est bien complexe et maintenant plus évident à intervenir
Pas de JOB75 ni DRANREB qui intervienne alors que je suis là .....étrange ??????
je te conseille de refaire et reformuler un nouveau Post
Désolé je suis occupé sur autre sujet
Conseil : Ouvre au début juste pour un Problème .... ensuite ouvre pour un second ...etc
tu auras 10 x plus de réponses
 

BUDGETS

XLDnaute Impliqué
Bonsoir Slt Christian
Ton sujet est bien complexe et maintenant plus évident à intervenir
Pas de JOB75 ni DRANREB qui intervienne alors que je suis là .....étrange ??????
je te conseille de refaire et reformuler un nouveau Post
Désolé je suis occupé sur autre sujet
Conseil : Ouvre au début juste pour un Problème .... ensuite ouvre pour un second ...etc
tu auras 10 x plus de réponses
Bonjour Hervé62,
J'ai créé un nouveau post Lg et B dans le fichier.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
293 048
Messages
1 928 126
Membres
183 855
dernier inscrit
safelhr