IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Retourner une référence sur une colonne d'un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Mai 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 72
    Par défaut Retourner une référence sur une colonne d'un tableau
    Bonjour,

    J'essaie de trouver la bonne formule pour récupérer la référence de type $X:$X sur une colonne dont le titre est "toto". En fait dans la feuille (que je récupère d'un autre outil) la colonne en question dont titre est "toto" peut se trouver tantôt à BL, tantôt à BP...Donc je voudrais m'affranchir de ces aléas dans mes formules.

    Merci.
    clem256

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par clem256 Voir le message
    Bonjour,

    Je me sers de cette fonction pour rechercher une colonne en lui indiquant l'onglet, la ligne de titre et le titre de la colonne à trouver.
    Si la colonne n'est pas trouvée, la fonction est égale à 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Function ColonneFeuille(ByVal FeuilleTitre As Worksheet, ByVal LigneTitre As Long, ByVal TitreRecherche As String) As Long
     
    Dim NbColonnes As Long
    Dim Cellule As Range, Aire As Range
     
        With FeuilleTitre
     
             ColonneFeuille = 0
             NbColonnes = .Cells(LigneTitre, .Columns.Count).End(xlToLeft).Column
             Set Aire = .Range(.Cells(LigneTitre, 1), .Cells(LigneTitre, NbColonnes))
     
             For Each Cellule In Aire
                 Select Case Mid(Cellule.Value, 1, Len(TitreRecherche))
                        Case TitreRecherche
                             ColonneFeuille = Cellule.Column
                             Exit For
                 End Select
             Next
     
             If ColonneFeuille = 0 Then DetectionColonnes = DetectionColonnes & Chr(10) & TitreRecherche
     
             Set Aire = Nothing
     
        End With
     
    End Function
    DetectionColonnes est une variable string publique qui va m'indiquer le résultat pour N recherches non satisfaites. Dans ce cas, la suite du programme ne peut être lancée.

    Attention, en cas d'homonymie, c'est la première valeur trouvée qui est prise en compte. On peut faire une recherche sur les N premiers caractères de la chaîne recherchée.

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Mai 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 72
    Par défaut
    Merci Eric, Philippe. J'exploiterai les suggestions pour un développement en VBA par la suite. Dans un premier temps je voulais juste mettre des formules Excel dans des cellules si c'est possible et non traiter le problème avec du code VBA. Peut-être que je ne suis pas dans le bon sous-forums pour cette question?

    Clem256.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par clem256 Voir le message
    Bonjour,

    La question étant posée dans le forum Macro VBA Excel, vous avez reçu des réponses en VBA.
    Sinon avez-vous regardé les fonctions RECHERCHEH, ou les combinaisons des fonctions INDEX et EQUIV ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Mai 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 72
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    La question étant posée dans le forum Macro VBA Excel, vous avez reçu des réponses en VBA.
    Sinon avez-vous regardé les fonctions RECHERCHEH, ou les combinaisons des fonctions INDEX et EQUIV ?
    Eric, merci pour la précision pour le forum. Je pense avoir déjà regarder les combinaisons de ces fonctions. Je n'ai pas pour l'instant trouvé la bonne combinaison. Mais je vais de nouveau me pencher sur la question.

    Clem256.

  6. #6
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    Nom : CaptureX1.JPG
Affichages : 951
Taille : 30,6 Ko

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En supposant que la ligne 1 de la liste de données contient bien les étiquettes de colonnes et que la première colonne est remplie de la première à la dernière ligne, voici un petit exemple d'une fonction qui renvoie la colonne comme objet Range en lui passant comme argument le nom de l'étiquette.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Function LabelColumn(StartRange As Range, Label As String, Optional WithLabel As Boolean) As Range
     ' http://philippe.tulliez.be 
     ' Renvoie une colonne comme objet Range
     ' StartRange (Range)  : 1ère cellule de la liste de données
     ' Label      (String) : Nom de l'étiquette de colonne
     ' [WithLabel](Boolean): Si l'on souhaite renvoyer l'adresse avec la 1ère ligne
     Dim rngData As Range, ColumnNumber As Integer
     Set rngData = StartRange.CurrentRegion
     On Error Resume Next
     ColumnNumber = Application.Match(Label, rngData.Rows(1), 0)
     On Error GoTo 0
     If ColumnNumber Then
      With rngData
       Set LabelColumn = .Offset(Abs(Not WithLabel), ColumnNumber - 1).Resize(.Rows.Count - Abs(Not WithLabel), 1)
      End With
     End If
     Set RngData = Nothing 
    End Function
    Exemple d'une procédure invoquant la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub TestLabelColumn()
     Dim rng As Range, Label As String
     Label = "salaire"
     Set rng = ThisWorkbook.Worksheets("db").Range("A1")
     Set rng = LabelColumn(rng, Label)
     If rng Is Nothing Then MsgBox "Non trouvé " & Label Else MsgBox rng.Address
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2007] Macro pour Copier coller des colonnes a partir d'une référence sur une ligne
    Par laurasoe dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/07/2014, 11h10
  2. [XL-2007] Retourner la valeur d'une fonction sur une colonne
    Par renaudjean dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/10/2013, 01h27
  3. Réponses: 4
    Dernier message: 25/06/2009, 11h40
  4. Ajouter une référence sur une librairie de classe
    Par Poussy-Puce dans le forum ASP.NET
    Réponses: 5
    Dernier message: 07/05/2008, 18h09
  5. Comment avoir une référence sur une Vue
    Par Philippe299 dans le forum MFC
    Réponses: 1
    Dernier message: 12/08/2005, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo