|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() gilbert Inscription : décembre 2010 Messages : 8 ![]() |
Est-il possible d’utiliser les noms des colonnes (colonne nommée) pour se déplacer d’une colonne à l’autre plutôt que d’utiliser Offset (0,1) ou Offset (0,8).
J’explique : J’ai une feuille Excel qui me sert de gestion de magasin. Cette feuille contient 8000 lignes et 45 colonnes. Donc ça fait du monde. Les marchandises sont identifiables avec un « code article » genre 91023654. J’utilise la méthode « Find » pour faire mes recherches dans la colonne des « Codes articles ».(ça marche très bien et c’est rapide.) Lorsque le code article est trouvé, je me déplace de colonne en colonne pour récupérer les données qui m’intéresse puis tout cela est transférer dans des « TextBox » d’une « UserForm ». Je fais les déplacements de colonne en colonne avec « Offset ( 0,1) » (cela marche très bien). Seulement voilà…. Si je modifie la feuille Excel en ajoutant ou suppriment des colonnes mes données récupéraient ne correspondent plus a l’organisation de ma « UserForm ». Ce qui est normal, car si j’ai récupéré les valeurs des colonnes suivantes « CodeArticle », « Acheteur », « ActivationCommande », « Libellé », « Inventaire » est . etc. Jusqu'à 45 colonnes et si entre-temps pour diverse raison je rajoute une colonne entre, par exemple : « ActivationCommande » et « Libellé », ActiveCell.Offset(0, 3).Select - qui me donner la valeur du « Libellé » il me donnera maintenant la valeur de la nouvelle colonne. Pour moi, ce n’est pas bon, car il me faut la valeur de « Libellé ». Pas question de modifier le programme chaque fois que j’ajoute ou suppriment des colonnes. J’ ai essayé de trouver une astuce au niveau de la feuille Excel en nomment toutes les colonnes. J’ai utilisé « Insertion – Nom – Définir – Définir un nom. » Puis dans le code VBA, j’ai essayé une multitude de procédures pour me positionner en utilisant les noms des colonnes. Hélas! toutes mes tentatives ont échoué. Ça ne fonctionne pas. Si quelqu’un a une idée, je suis preneur. Merci pour votre aide. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : novembre 2006 Messages : 1 464 ![]() |
puisque tu travaille au travers d'une userform, l'ordre des colonnes dans ta base n'a pas d'importance. en ajoutant une nouvelle colonne a la fin des colonne, tu éviterais ce probleme. tu ajoute une colonne, tu ajoute une textbox, tu ajoute un offset a ta recherche et le tour est joué. si tu veux que ton application soit perene, il ne faut pas que la structure bouge tout les 4 matins. bien sur, si tu regarde le tableau, ça fait un peu bordel que par exemple la colonne départ se situe aprés la colonne arrivée, mais c'est l'organisation dans ta USF qui compte quand tu rentre et tu sort tes marchandises, ta feuille base peut etre cachée. mais a la limite, m^meme si tu doit de temps en temps imprimer ta base et que bien sur l'ordre des colonne rende la lecture plus facile, tu peux créer une deuxieme feuille base, ou tu copie tes colonne dans le no ordre avec liaison, dans ce cas
tu ajoute une colonne a la fin de la feuille base disons en colonne P et quans tu la colle en colonne B de la feuille a imprimer excel vas automatiquement décaler les autres colonne et les prendre en compte sans erreur, par contre au niveau du programme, il travaillera toujours sur la colonne P et ne feras pas d'erruer non plus |
|
|
20
|
|
|
#3 |
|
Invité de passage
![]() gilbert Inscription : décembre 2010 Messages : 8 ![]() |
Merci alsimbad, j’adopte cette solution. Je ne connaisser pas la commande «Copier avec liaison» et dire que ça fait 10 ans que je passe à côté de cette commande.
Donc pour récapituler ; je structure une 1er feuille comme une basse de données sans trop me préoccuper de l’ordre des colonnes (enfin si un peu quand même). Puis je fais une 2er feuille en copiant avec liaison les colonnes de la première feuille, mais cette fois dans l’ordre que je souhaite avoir. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : novembre 2006 Messages : 1 464 ![]() |
c'est ça. je dirais m^me que tu aurais tout interet a structurer une premiere fois une feuille de données et......
ne plus jamais y toucher |
|
|
10
|
|
|
#5 |
|
Office & Excel ![]() ![]() ![]() |
Salut.
Un conseil: Dans la propriété TAG du contrôle du userform, tu indiques l'intitulé de la colonne qui contient les données qui seront affichées dans ce contrôle, et tu te crées une petite fonction qui te renvoie le numéro de la colonne en fonction du tag du contrôle... Ainsi, tu n'auras jamais de soucis à retrouver la bonne colonne, même si l'ordre des colonnes est modifié.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
|
10
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2010 Messages : 24 ![]() |
Après tu a une solution qui peut devenir très laborieuse (surtout avec 45 colonnes) qui consisterai a rechercher l'emplacement de toutes tes colonnes en début de macro et de les affecter, pour leur position, à des variables.
Ces variables se retrouverai ensuite dans tes offsets et sélections de colonne. J'ai fait ca pour 8 colonnes qui avaient toujours le même nom mais qui pouvaient être déplacées selon le besoin de l'utilisateur (déja pas évident de s'y retrouver avec les variables)! En gros, la macro serai : -Recherche colonnes avec nom "" -Sélectionne la colonne -Variable = sélection et ainsi de suite! Note tout de même que la méthode la plus simple est de ne pas faire bouger ton classeur! En espérant que cela puisse t'aider un peu! Ps : je ne te met pas mon code car ca serai purement incompréhensible et très long! |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() |
bonjour
il y a une solution qui serait de nommer des plages corespondant a tes colonnes toujour avec ton find trouver la ligne de ton article et tes textbox corespondrais a la ligne et nom de la colonne de cette facon a chaques fois que tu va ajouter un e colonnes les nom vont ce deplacé avec donc les coordonnées ne seront pas fausses au plaisir
__________________
mes fichiers dans les contributions: mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA mon nouveau mouse in out pour les boutons dans un userform mon addin pour prendre un cliché de selection de cellules si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres et n'oublie pas de voter ![]()
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com