Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 17/11/2009
Messages:
15
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 26-11-2009 01h19
Bonjour le forum, Je pense qu’il était préférable d’ouvrir un autre fil. J’ai essayé d’adapter vos conseils et vos modèles de macros pour réaliser mon projet, mais sans grande réussite. Après avoir sélectionné le mois (formulaire), je n’arrive pas à masquer les lignes pour les mois qui précèdent mon choix (exemple : masquer les lignes du mois de janvier, si je choisis février). Le mois choisi devrait toujours apparaître à partir de la ligne 6. J’espère que vous me comprendrez, car il me semble que mes explications ne sont pas très claires. Je souhaiterai, si possible, voir apparaître le mot « maqué », lorsque les colonnes noms sont effectivement masquées (si j’exagère, n’hésiter pas à me le faire remarquer). Avec mes remerciements anticipés. Cordialement. |
|
|
Re: Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 26-11-2009 19h15
Bonsoir lours, le Forum,
Tu trouveras en pièce jointe une proposition de réponse à ton besoin. J'ai modifié ta procédure CmdM1_Click() comme suit : Private Sub CmdM1_Click() If C Is Nothing Then Exit Sub Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 17/11/2009
Messages:
15
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 27-11-2009 23h17
Bonsoir Didier, le forum,
Merci pour cette réponse claire et brillante. Je vais essayer de comprendre cette macro. Je tente de faire apparaître le mot "masqué" sur le formulaire. Je reviendrai vers vous si je ne trouve pas la solution. Cordialement |
|
|
Re: Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 17/11/2009
Messages:
15
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 02-12-2009 00h17
Bonjour Didier, le forum, Si les deux colonnes se rapportant à un nom étaient affichées, je souhaiterai faire apparaître le mot « affiché » dans la 3ème colonne (sur la même ligne que le nom) de la ListBox, et inversement (le mot « masqué »). J’ai réalisé des tests sans succès. Aussi, je me retourne vers vous pour essayer de solutionner ce problème. J’ai supprimé le bouton de commande « Afficher/Masquer » pour n’effectuer qu’un double clic pour afficher ou masquer le nom. Le résultat est un désastre, et mes connaissances ne me permettent pas de détecter les erreurs. En espérant ne pas trop abuser de votre temps et de votre gentillesse, Cordialement |
|
|
Re: Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 02-12-2009 21h12
Bonsoir lours, le Forum,
En pièce jointe, ton fichier modifié en conséquence. J'ai tout d'abord rétabli la propriété BoundColumn du contrôle ListBoxA sur la valeur 2 (et non 3 comme tu l'avais modifiée). Pour info, la propriété Value du contrôle tire sa valeur dans la colonne dont le numéro est indiqué en BoundColumn. En mettant 3, tu fausses le retour de valeur attendu dans le code (= plantage assuré). Ensuite, j'ai ajouté 2 lignes dans le code ci-dessous (j'ai repéré les lignes ajoutées par un commentaire "<<< AJOUT LIGNE >>>") : Option Explicit Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 17/11/2009
Messages:
15
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 03-12-2009 01h39
Bonjour Didier, le forum, C’est génial. Je te remercie pour tes explications, mais je m’en excuse par avance, je n’arrive pas à comprendre la propriété BoundColumn. En effet, je pensai que si j’avais dans la ListBoxA 3 colonnes, je devais indiquer également 3 pour BoundColumn. Avec l’aide sur Visual Basic, j’essaie de déchiffrer les codes, et ce n’est pas évident (mes neurones n’ont plus vingt ans). Peux-tu me préciser, si je ne prends pas trop de ton temps, pourquoi indiquer -1 dans « .List(ListCount -1,1) ». Je suppose que 1 correspond à la 2ème colonne (0=1ère colonne, 1=2ème colonne, 2=3ème colonne). Encore Merci pour ton dévouement, et ta gentillesse à partager ton immense savoir. Cordialement |
|
|
Re: Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 03-12-2009 19h49
Bonsoir lours, le Forum,
Citation : lours a écrit : Bon, je tente une mini explication sur les propriétés clés du contrôle ListBox (valable aussi pour le contrôle ComboBox) : Propriété Value : comme tu le sais, la propriété Value d'un contrôle retourne le contenu de ce contrôle. Pour un TextBox par exemple, la propriété Value te retourne la chaîne de caractères qui est affichée dans ce TextBox. Par défaut, une ListBox contient une seule colonne. Dans ce cas là, c'est fort simple : lorsque l'utilisateur sélectionne un élément, la propriété Value retourne la donnée contenu dans cet élément sélectionné. Propriété ColumnCount:si je souhaite afficher plusieurs colonnes de données dans ce contrôle, je vais jouer sur la propriété ColumnCount. On l'a vu, par défaut, cette propriété est définie à 1. Si je compte afficher 5 colonnes par exemple, je vais donc lui attribuer la valeur... 5 ! Dans le cas d'une ListBox multicolonnes, rien ne change pour la propriété Value. Si je demande cette propriété Value, j'obtiens toujours la donnée issue de la première colonne (et selon la ligne sélectionnée dans le contrôle bien sûr). Par défaut donc, la propriété Value retourne toujours la valeur issue dans la première colonne d'une ListBox, quelque soit le nombre de colonnes du contrôle. Mais comment faire si, après sélection d'une ligne par l'utilisateur, je souhaite obtenir la donnée contenue dans la 2ème ou 3ème colonne du contrôle au lieu de la première ? Une solution "académique" consiste à recourir à la propriété List() qui représente en fait le tableau des données contenues (à 2 dimensions : pour ligne et colonne)... Mais VBA nous offre une solution beaucoup plus simple et souvent plus pratique : on peut redéfinir la colonne cible de la propriété Value. Ainsi, en testant la propriété Value, on peut décider d'obtenir directement la donnée contenue dans une colonne autre que la première : pour ce faire, on va utiliser la propriété BoundColumn. Définie à 1 par défaut (pour colonne 1), on lui attribue alors le numéro de la colonne souhaitée ! Dans ton fichier, la ListBoxA comprend 3 colonnes et j'ai redéfini volontairement la propriété BoundColumn sur 2 car c'est la donnée contenue dans la 2ème colonne qui m'intéresse en retour lorsque je demande : ListBoxA.Value. Citation : lours a écrit : Pour rappel, la propriété List() est comme un tableau à 2 dimensions qui se présente ainsi : ListBox1.List(NumLigne, NumColonne) Comme tu l'as déduit, la particularité ici, c'est que cette numérotation des Lignes / Colonnes commence à 0 (zéro). Ca ne simplifie pas vraiment les choses, mais c'est un coup à prendre... - Si je veux obtenir la donnée contenue dans la première ligne et première colonne du contrôle, je demande donc : List(0,0) - Si je veux obtenir la donnée contenue dans la 3ème ligne et 4ème colonne, je fais : List(2, 3) - Et enfin, si je veux obtenir la donnée contenue dans la dernière ligne et dernière colonne du contrôle ListBoxA, alors j'ai recours à : With ListBoxA Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 17/11/2009
Messages:
15
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 03-12-2009 23h05
Bonsoir Didier, le forum, Un très grand merci pour toutes ces explications. Etant donné la qualité des commentaires, tout devient plus clair. J’apprécie tes connaissances, et en plus tu ajoutes la modestie à tes qualités. On ne peut que rester admiratif. Félicitations. |
|
|
Re: Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 17/11/2009
Messages:
15
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 05-12-2009 18h43
Bonsoir Didier, le forum, Que l’apprentissage est difficile, car si tout fonctionne sur les exemples fournis, j’éprouve des difficultés pour l’appliquer à mon projet. Sur le fichier joint, j’ai figé les volets en B6, ensuite j’ai déplacé les lignes et les colonnes pour placer le curseur en D50. Si je lance la macro (car la fin du bouton Visualiser apparaît), les lignes (5 à 49) et les colonnes (B et C) sont toujours masquées, alors que la ListBoxA indique que toutes les colonnes sont affichées. Je valide un mois sélectionné, et rien ne se produit. Si je protège la feuille, j’ai les mêmes problèmes. Je suppose que dans tous les cas la feuille doit être déprotégée et que les volets libérés. Je compte sur vous pour m’aider à résoudre ces problèmes. Enfin, une confirmation : dans la ligne For Each cell in Rows(4) signifie que l’on récupère les éléments de la ligne 4 de la feuille, mais pour …. Constants, 3) ? (si j’ose : 3 colonnes dans la ListBoxA – J’arrête car je fatigue…). En vous remerciant par avance, Cordialement. |
|
|
Re: Afficher/Masquer Lignes et colonnes | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 06-12-2009 00h15
Bonsoir lours, le Forum,
Citation : lours a écrit : Si j'interprète bien la situation là, je pense que ce n'est plus un problème VBA que tu rencontres lours. Pour info, des lignes (ou des colonnes) non visibles parce que tu as figé les volets et joué sur l'ascenseur ne sont pas pour autant des lignes dites "masquées". Elles sont tout simplement hors de ton champ de vision, ce qui n'est pas pareil... (c'est un peu la même chose pour un classeur vierge : si tu descends l'ascenseur vertical, la ligne 1 devient hors de portée, donc n'est plus visible... elle n'est pas masquée pour autant !). Dans l'exemple cité, si tu décides de rendre les lignes 5 à 49 "hors de portée" de ton champ de vision (en jouant sur les ascenseurs), que leur propriété Hidden soit True ou False ne changera pas grand chose, elles seront toujours hors de ta vue. Citation : lours a écrit : Là, je ne comprends pas ce que tu veux dire. La protection de la feuille n'a pas d'influence sur cette gestion de l'affichage. Pour info, il est quasiment toujours possible de permettre aux macros d'agir sur une feuille protégée sans avoir à lever cette protection (faire une recherche dans le Forum sur l'argument de protection UserInterfaceOnly), mais ton problème ne semble pas porter sur ce point là. Citation : lours a écrit : Si je fais : For Each cell in Rows(4) ... je parcours et teste toutes les cellules de la ligne 4 (soit 256 cellules sur XL2003). Ce n'est pas une façon efficace de travailler. For Each cell In Rows(4).SpecialCells(xlCellTypeConstants, 3) ... je parcours et teste uniquement les cellules de la ligne 4 ayant une valeur contenue (soit 6 cellules dans ton exemple). Je ne traite donc que les cellules qui m'intéresse.
Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|