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:

Discussions similaires


Haut Bas