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.
 

Pièces jointes

  • entête_colonne.xlsm
    15.1 KB · Affichages: 54
  • entête_colonne.xlsm
    15.1 KB · Affichages: 56
  • entête_colonne.xlsm
    15.1 KB · Affichages: 56
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 modification par un modérateur:

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")
 

marida

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

Bonjour,

pour la méthode autofilter le fichier est en PJ

merci d'avance
 

Pièces jointes

  • entête_colonne.xlsm
    16.2 KB · Affichages: 48
  • entête_colonne.xlsm
    16.2 KB · Affichages: 55
  • entête_colonne.xlsm
    16.2 KB · Affichages: 50
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+
 
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 modification par un modérateur:

Discussions similaires

Réponses
2
Affichages
102
Réponses
3
Affichages
274

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 851
dernier inscrit
vaiata