Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

obtenir le numéro d'une colonne

  • Initiateur de la discussion Initiateur de la discussion marida
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

marida

Guest
Bonjour,

Dans ma macro ci-jointe, je souhaiterais récupérer le numéro de la colonne dont l'intitulé est "bic".
en gros ma boucle parcourt toute l’entête donc la première ligne et dès qu'elle trouve "bic" , elle me récupère le numéro de la colonne.
voir PJ

merci pour votre aide.
 

Pièces jointes

Re : obtenir le numéro d'une colonne

Bonjour,

Avec cette petite fonction qui renvoie le numéro de colonne ou 0 si non trouvée dans le tableau passé en paramètre:

Code:
Function NumColEntete(Etiquette As String, Tableau As Range) As Long
    Dim Idx As Variant
    Idx = Application.Match(Etiquette, Tableau.Rows(1), 0)
    If Not IsError(Idx) Then NumColEntete = Idx
End Function

Utilisation:

Code:
Dim MaColonne as Long
MaColonne = NumColEntete("bic", ActiveSheet.Range("1:1"))

Sinon, avec ton code:
Code:
Sub entête_colonne()
    Dim i, var As Integer
    For i = 1 To 100
        If Cells(1, i).Value = "bic" Then
            var = Cells(1, i).Column
            Exit For
        End If
    Next
    Cells(12, 1).Value = var
End Sub

A+
 
Dernière modification par un modérateur:
Re : obtenir le numéro d'une colonne

bonjour Hasco, David

cela fonctionne mais quand j'essaie d'utiliser la variable v avec un filtre automatique

Worksheets(1).[$A$2:$AE$10000].AutoFilter Field:=var, Operator:= _
xlFilterValues, Criteria2:=Array(0, "rouge")
 
Re : obtenir le numéro d'une colonne

Re,

voici ta macro corrigée:

Code:
Sub entête_colonne()
    Dim i, var As Integer
     For i = 1 To 100
        If Cells(1, i).Value = "bic" Then
            var = i
            Exit For
        End If
    Next
    If var > 0 Then
     Sheets("Feuil1").[$A$2:$D$10].AutoFilter Field:=var, _
                                    Operator:=xlFilterValues, _
                                    Criteria1:=Array(0, "rouge")
    End If
End Sub
P.S. il vaut mieux utiliser le nom des feuilles plutôt que leur du numéro d'index qui est volatile suivant leur position.
A+
 
Re : obtenir le numéro d'une colonne

Re,

merci Hasco, cela fonctionne bien. j'ai juste une question, pourquoi il est important préciser que var>0 , il n'y a pas vraiment de chance qu'il soit négatif... non?
 
Re : obtenir le numéro d'une colonne

Re,
n'y a pas vraiment de chance qu'il soit négatif... non?


Crois mois, SI! surtout si tu donnes ton fichier final à d'autres utilisateurs.
Imagine qu'il y en ait un (ou toi) qui par inadvertance mette efface "bic" dans l'entête et réécrive " bic" ou "bic " ou " bic ", la macro planterait. Var serait égal = 0

de façon générale il est toujours bon de contrôler ou valider les données utilisateur.

Il y a une solution(Partielle), rechercher la première cellule qui contienne "bic" : if Cells(1,i) Like "*bic*" then.....

Même là si l'utilisateur remplace bic par boc ou tout autre chose......Crack

Donc on en revient à tester Var!

A+
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…