ESSAI-MENUS : ThisWorkbook [Résolu]

Signaler
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021
-
Messages postés
386
Date d'inscription
samedi 7 novembre 2020
Statut
Membre
Dernière intervention
14 mai 2021
-
Bonjour,
1) quelle est l'unité de mesure des 60 : cm, pixels, etc. ?
2) Dans la feuille accueil produits, pour les deux combo boxes, peut-on voir les colonnes ? Si oui, comment procéder ? (voir commentaires dans le code de la feuille Accueil produits).
3) Les instructions figurant dans ThisWorkbook sont-elles obligatoires pour la bonne exécution du programme ? Je pensais qu'elles permettaient la création des deux combo boxes mais cela ne semble pas être le cas.
D'avance merci pour votre aide.
https://www.cjoint.com/c/KDzqCTGZWZo



Configuration: Windows / Edge 90.0.818.46

3 réponses

Messages postés
53890
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
18 mai 2021
15 891
Bonjour.

"1) quelle est l'unité de mesure des 60 : cm, pixels, etc. ? " Que veut dire cette phrase ?
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021

Bonjour,

Les columswidth sont exprimés en cm, en pixels ou autre mesure ?
Messages postés
53890
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
18 mai 2021
15 891
"2) Dans la feuille accueil produits, pour les deux combo boxes, peut-on voir les colonnes ? "

Par définition, une ComboBox est une boîte ; pas un tableau ; elle ne peut donc pas comporter des colonnes.
https://docs.microsoft.com/fr-fr/dotnet/api/system.windows.forms.combobox?view=net-5.0

Notre ami pijaku a édité en 2014 une fiche pratique dans CCM, sur les combobox en cascade, qui pourrait t'intéresser ...

C'est bien, la retraite ! Surtout aux Antilles ... 
Raymond (INSA, AFPA)
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021

Le premier lien du message 3 renvoie à de la publicité pour acheter un produit?
Pourquoi dans les explications que j'ai reçues, est-il précisé alors première colonne du combo box, deuxième colonne du combo box ?
Messages postés
9968
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 mai 2021
1 142 >
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021

Bonjour,
Non le lien renvoi bien ici:

Salutations
Le Pingou
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021
>
Messages postés
9968
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 mai 2021

Bonjour Le Pingou,

En effet, j'arrive bien sur le site. ce matin, je ne suis pas arrivé.

Pour la question 2, j'ai trouvé la réponse : il s'agit de point.

Reste la question 3 à solutionner.
Messages postés
9968
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 mai 2021
1 142
Hello Raymond,
Petit complément : la Combobox peut contenir une liste avec plusieurs colonnes!

Amicalement
Le Pingou
Messages postés
53890
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
18 mai 2021
15 891 >
Messages postés
9968
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 mai 2021

Salut à toi

Heureux de l'apprendre ; mais où trouver les indications nécessaires ? Je n'en ai vu nulle part.
Merci.
Messages postés
386
Date d'inscription
samedi 7 novembre 2020
Statut
Membre
Dernière intervention
14 mai 2021
76
Bonjour à tous,
Pour le point 3 : non, ces instructions dans ThisWorbook ne sont pas obligatoires. Les combos ont été créées et placées "en mode création" depuis l'interface "Développeur".

Ces lignes de code correspondent juste à des paramètres qu'on a par ailleurs déjà définis par défaut dans les propriétés des combos. On pourrait donc les supprimer :
Messages postés
386
Date d'inscription
samedi 7 novembre 2020
Statut
Membre
Dernière intervention
14 mai 2021
76 >
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021

oui ! on peut aussi tout simplement commenter toutes les lignes au cas où on voudrait s'en resservir !

On devient tous un peu moins con ;-) en partageant le savoir ici ou ailleurs ! et comme on a tous à apprendre...
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021
>
Messages postés
386
Date d'inscription
samedi 7 novembre 2020
Statut
Membre
Dernière intervention
14 mai 2021

Is nothing : par quoi peut-on traduire ce mot : si la cellule est vide, si la cellule n'a rien; y-a-t-il d'autres possibilités ? si oui, lesquelles .?
Messages postés
386
Date d'inscription
samedi 7 novembre 2020
Statut
Membre
Dernière intervention
14 mai 2021
76 >
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021

Une cellule vide sera représentée par IsEmpty (=true) ou value="".
Pour faire une analogie avec le réel : la boîte (la cellule) est définie mais on n'y a rien mis ou on l'a vidée. D'un point de vue informatique, on a déclarée une variable qu'on a associé à une propriété de cette cellule (.value="" par exemple permet de définir sa valeur)..

Is Nothing c'est encore différent. Pour faire simple, c'est la valeur par défaut d'une variable qu'on a créé mais qu'on n'a pas encore initialisée (pas de valeur définie) et donc relié à un élément du classeur.

Pour illustrer, prenons ce code qu'on trouve quelque part dans le programme :
'Si le changement concerne la cellule "C5"
    If Not Intersect(Target, Range("C5")) Is Nothing Then


Avec Intersect , on cherche à savoir s'il y a un croisement entre Target (qui peut-être une cellule isolée ou une plage de cellules et une autre plage dans la feuille, en l'occurrence la cellule C5). Si ce croisement n'existe pas alors le résultat renvoyé est Nothing, c'est à dire non défini, inexistant .

Si on se réfère à la documentation VBA, on trouve ceci pour NOTHING: https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/nothing que l'on comprend encore mieux avec la référence à NULL : https://docs.microsoft.com/fr-fr/dotnet/visual-basic/programming-guide/language-features/data-types/nullable-value-types
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021
>
Messages postés
386
Date d'inscription
samedi 7 novembre 2020
Statut
Membre
Dernière intervention
14 mai 2021

BonsoirRoMa_31,

Dans le code de la feuille Accueil produits, procédure Worksheet_Change, on cherche à savoir s'il y a un croisement entre Target...en l'occurrence la cellule C5. Ma question : avec quelle cellule et dans quelle feuille il va chercher le croisement (croisement = égalité, référence identique, convergence, correspondance exacte ?).
Même observation pour le code de la feuille MP.
Messages postés
386
Date d'inscription
samedi 7 novembre 2020
Statut
Membre
Dernière intervention
14 mai 2021
76 >
Messages postés
801
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
2 mai 2021

Le code concerne la feuille dans lequel il est inséré.

Pour Accueil, à chaque changement de contenu (évènement _Change) de cette feuille, on vérifie si la modification concerne la cellule C5. Target étant a priori n'importe quelle cellule modifiée dans la feuille. On restreint donc la surveillance à la seule cellule C5.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    'Contrôler les cellules interdites à la modification
    If Not Intersect(Target, Range("B3", "B7")) Is Nothing Then
        MsgBox "Interdit de modifier cette cellule"
    End If
    If Not Intersect(Target, Range("B16")) Is Nothing Then
        MsgBox "Interdit de modifier cette cellule"
    End If

End Sub


Dans la procédure ci-dessus, on utilise l'évènement _SelectionChange dans la feuille MP . On cherche donc à savoir si la cellule B3 ou la cellule B7 fait partie de la plage (Target) que l'on vient de sélection (à la souris par exemple). Idem pour B16.
En l'occurrence, le test n'est pas assez précis car si on sélectionne toute la feuille, on aura plusieurs fois le message "Interdit..." sans savoir qu'il s'agit de B3, B7 et B16 qui sont interdits.

On aurait pu écrire ce code qui donnerait le même résultat :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    'Contrôler les cellules interdites à la modification
    If Not Intersect(Target, Range("B3", "B7", "B16")) Is Nothing Then
        MsgBox "Interdit de modifier cette cellule"
    End If
End Sub


Utilisé dans une autre contexte, avec par exemple la syntaxe Intersect(Range("A3:C11"), Range("B9:F16")) on obtient le résultat "B9:C11" qui est l'intersection des 2 plages passées en paramètres.
On est bien d'accord que l'intérêt est dans ce cas assez limité puisqu'on pourrait calculer cela sans programmation : les deux plages sont connues à l'avance. Ca devient vraiment intéressant si au moins une des 2 plages n'est pas connue à l'avance.