Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2124 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro excel interrogeant un tableau par le nom de la colonne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro excel interrogeant un tableau par le nom de la colonne

n°1930091
Zboss
Si tu doutes, reboot...
Posté le 08-10-2009 à 10:23:25  profilanswer
 

Bonjour à tous,
 
   Je suis en train de me remettre doucement à faire des maros excel, et je peine sur un détail qui me chagrine.
 
J'ai un tableau avec par exemple 4 colonnes ayant pour titre "Titre Album", "Nom Artiste", "Durée". Aujourd'hui ma macro fait différentes requètes sur ce tableau, mais j'interroge mes cellules à chaque fois par la position ligne/colonne de la cellule (ex : Cell (2,1) si je veux récupérer le titre du premier Album dans la liste. Là où ça pose problème c'est qu'on peut très bien imaginer dans ce tableau rajouter une colonne "Année" par exemple, en l'insérant entre le nom de l'artiste et la durée, et là mes cellules étant décalées, plus rien ne fonctionne...  [:jsuistropcon]  
 

|Titre Album |Nom Artiste  |Durée   |

|Album 1      |Artiste 1     |Durée 1 |
|Album 2      |Artiste 2     |Durée 2 |
 
Pourrait devenir plus tard :
 

|Titre Album |Nom Artiste |Année     |Durée   |

|Album 1      |Artiste 1     |Année 1  |Durée 1|
|Album 2      |Artiste 2     |Année 2  |Durée 2|
 
Pour que ma macro soit un minimum pérenne, et survive aux modifications éventuelles de ce tableau, je cherche à savoir s'il existe un méthode qui permettrai de rendre ma macro indépendante des ajouts/suppressions de colonnes. Je pensais bien à faire une recherche à chaque fois sur le titre de la colonne et récupérer ainsi le numéro de la colonne en question pour poursuivre ma requète.
 
Existe-t-il une autre solution ? Ou est-ce le seul moyen de procéder ?
 
Merci d'avance pour votre aide !  :hello:


Message édité par Zboss le 08-10-2009 à 10:26:46

---------------
Mario Kart for Ever
mood
Publicité
Posté le 08-10-2009 à 10:23:25  profilanswer
 

n°1930250
produvba
Posté le 08-10-2009 à 15:31:19  profilanswer
 

Plein de solutions !
Utiliser d'abord "Rechercheh()" pour chercher dans quelle colonne se trouve par exemple "Durée" si c'est l'item recherché, puis utiliser le numéro de cette colonne pour aller chercher la donnée.
Peut-être plus élégant, créer un tableau croisé dynamique et utiliser la fonction "LIRETABLEAUCROISEDYNAMIQUE" (je ne sais plus la syntaxe, mais il suffit de créer un TCD et essayer)...
Si tu as des données comme cela bien structurée et qu'il s'agit d'une application professionelle, peut-être vaut-il mieux passer à une importation dans ACCESS et travailler par requêtes SQL.  
Bon courage !

n°1930509
Zboss
Si tu doutes, reboot...
Posté le 09-10-2009 à 09:30:47  profilanswer
 

produvba a écrit :

Plein de solutions !
Utiliser d'abord "Rechercheh()" pour chercher dans quelle colonne se trouve par exemple "Durée" si c'est l'item recherché, puis utiliser le numéro de cette colonne pour aller chercher la donnée.
Peut-être plus élégant, créer un tableau croisé dynamique et utiliser la fonction "LIRETABLEAUCROISEDYNAMIQUE" (je ne sais plus la syntaxe, mais il suffit de créer un TCD et essayer)...
Si tu as des données comme cela bien structurée et qu'il s'agit d'une application professionelle, peut-être vaut-il mieux passer à une importation dans ACCESS et travailler par requêtes SQL.  
Bon courage !


 
Ah oui, bonne idée la fonction rechercheh(), je m'en souviens maintenant !
 
Merci du conseil, et à la prochaine pour d'autres questions :D


---------------
Mario Kart for Ever
n°1931759
SuppotDeSa​Tante
Aka dje69r
Posté le 14-10-2009 à 14:39:34  profilanswer
 

Autre solution, simple.
 
Nommer ta/tes cellules de titre, et en fonction du nom de la cellule sur laquelle tu es, executer ta/tes macros.
Ce qui fait que si tu inseres une colonne entre "Nom artiste" et "Annee" tes cellules "titre" garderont le meme nom.
Il n'y a plus qu'a faire reference aux cellules en fonction du nom du titre.
 
Insertion, Nom, Definir
ou saisir directement le nom dans "Zone nom"


Message édité par SuppotDeSaTante le 14-10-2009 à 14:40:58

---------------
Soyez malin, louez entre voisins !
n°1931773
Zboss
Si tu doutes, reboot...
Posté le 14-10-2009 à 14:58:14  profilanswer
 

Pas con, j'vais essayer ça, merci !


---------------
Mario Kart for Ever
n°1934142
Zboss
Si tu doutes, reboot...
Posté le 21-10-2009 à 11:35:13  profilanswer
 

Salut à tous !
 
   Bon j'avance pas mal sur ma macro excel, et maintenant j'ai une question sur les évènements !
 
J'ai un tableau constitué de x lignes. Je voudrais que quand je clique sur une des cases de la première colonne, ça me sélectionne toute la ligne correspondante, mais également que je puisse faire cela pour plusieurs lignes. C'est à dire que si je clique en A2 puis A4 par exemple, ça me sélectionne toute la ligne 2 et toute la ligne 4. Est-ce possible ?
 
J'ai vu que ça pouvait se faire par un "SelectionChange", mais je ne parviens pas à mon but.
 
Merci d'avance pour vos conseils ;)


---------------
Mario Kart for Ever
n°1934732
seniorpapo​u
Posté le 23-10-2009 à 07:29:28  profilanswer
 

Bonjour,
as-tu essayé:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then
Application.EnableEvents = False
Selection.EntireRow.Select
Application.EnableEvents = True
End If
End Sub
 
Cordialement

n°1942722
Laoo
Posté le 20-11-2009 à 10:56:17  profilanswer
 

Slt
éventuellement une astuce pour sélectionner plusieurs lignes non contigües consiste à faire un filtre sur un critère commun à ces lignes, ou bien aux autres, puis:  
    Selection.SpecialCells(xlCellTypeVisible).EntireRow.Select
 
puis supprime le filtre avec        Selection.AutoFilter
et voilà

n°1942730
Laoo
Posté le 20-11-2009 à 11:20:42  profilanswer
 

suite:
si tu n'as pas de critères communs mais que tu veux sélectionner 1 ligne sur deux, tu filtres les lignes paires (ou impaires); si c'est pour une mise en forme, tu peux aussi utiliser la M En F conditionnelle, que tu peux aussi baser sur les lignes paires.

n°1942733
Zboss
Si tu doutes, reboot...
Posté le 20-11-2009 à 11:23:57  profilanswer
 

C'est marrant que ce topic remonte justement maintenant, je vais me réattaquer à ce fichier la semaine prochaine :D .


---------------
Mario Kart for Ever

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro excel interrogeant un tableau par le nom de la colonne

 

Sujets relatifs
Macro Covariance[Excel]Aide au Retour à l'Emploi
insertion image dans fichier excelproblème crash Excel 2000 après supression d'un onglet
POI Excel IllegalStateException getOutputStream()Copier le Paragraphe donc le si son tableau contien OK dans un fichier
[vba excel debutant] creer 1 programme en boucleJSP renvoyer un flux de fichier excel
Automatisation publipostage Word: dernier enregistrement excelbizarre equivalence pointeur /tableau !!!
Plus de sujets relatifs à : Macro excel interrogeant un tableau par le nom de la colonne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR