Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Conception
Conception Questions relatives à la conception d'un classeur Excel (structure, organisation, protection, sécurisation, ...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2010, 21h15   #1
Invité de passage
 
gilbert
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : gilbert
Âge : 53

Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Par défaut Utilisation des noms des colonnes

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.
Tarasboulba64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 05h39   #2
Membre Expert
 
Inscription : novembre 2006
Messages : 1 464
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 464
Points : 1 410
Points : 1 410
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
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 22/12/2010, 18h11   #3
Invité de passage
 
gilbert
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : gilbert
Âge : 53

Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Par défaut j’adopte cette solution

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.
Tarasboulba64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 06h02   #4
Membre Expert
 
Inscription : novembre 2006
Messages : 1 464
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 464
Points : 1 410
Points : 1 410
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
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/12/2010, 21h03   #5
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 423
Points : 14 423
Envoyer un message via Skype™ à Pierre Fauconnier
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)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2011, 11h20   #6
Candidat au titre de Membre du Club
 
Inscription : novembre 2010
Messages : 24
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : novembre 2010
Messages : 24
Points : 14
Points : 14
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!
p51 mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 18h11   #7
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 827
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 827
Points : 2 853
Points : 2 853
Envoyer un message via MSN à patricktoulon
Par défaut heu

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
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h17.


 
 
 
 
Partenaires

Hébergement Web