obtenir le numéro d'une colonne

marida

XLDnaute Nouveau
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.
 

Fichiers joints

G

Guest

Guest
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 édition par un modérateur:

Littledave

XLDnaute Junior
Re : obtenir le numéro d'une colonne

Salut Marida,

remplace l'affectation de la variable var par ceci :

Code:
var = Cells(1, i).Column
@++
David
 

marida

XLDnaute Nouveau
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")
 
G

Guest

Guest
Re : obtenir le numéro d'une colonne

Re,

Si tu joignais un fichier exemple il serait plus facile de comprendre de quoi il retourne.

A+
 
G

Guest

Guest
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+
 

marida

XLDnaute Nouveau
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?
 
G

Guest

Guest
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 édition par un modérateur:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas