recuperer nom colonne depuis index

yannickdtk

XLDnaute Nouveau
Bonjour,

je parcours la première ligne d'un fichier excel. Si ma macro trouve une valeur définie, il me donne la colonne à laquelle il a trouvé cette valeur. Le problème, c'est que je récupère l'index de la colonne, et je voudra son "nom". C'est à dire, si je trouve mon mot à la colonne D, il va me renvoyer 4, et moi je voudrai "D" :)


Code:
    For i = 2 To nbRubrique 'on parcourt les rubriques
        For Each col In Sheets(nomFeuille).Columns 'on parcourt les colonnes de la feuille a traiter
            If Sheets(nomFeuille).Cells(1, col.Column).Value = Sheets("calcul").Cells(i, 1) Then 'si ça a le meme nom
                Sheets("calcul").Range("B" & i).Value = col.Column
                Exit For
            End If
        Next
    Next

voila ce que j'ai fait. J'ai pensé utiliser l'attribut Name, mais ça me lance en erreur.

Sinon j'ai pense créer une collection avec tous les A, B, C .... AA, AB ... mais je me vois pas rentrer 256 elements...

Ou alors faire un traitement avec le code ascii, char(col.column+asc("A")-1), mais ça ne marche plus des qu'on arrive aux colonnes "AA" ...

Pour resumer ma demande, je voudrai pouvoir recuperer le nom de la colonne depuis son index :)

Merci d'avance.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : recuperer nom colonne depuis index

Bonjour Yannick, bonjour le forum,

Un peu tiré par les cheveux... je te propose la modif suivante à ta macro :
Code:
Dim nomcol As String 'déclare la variable nomcol
 
For i = 2 To nbrubrique 'on parcourt les rubriques
       For Each col In Sheets(nomFeuille).Columns 'on parcourt les colonnes de la feuille a traiter
           If Sheets(nomFeuille).Cells(1, col.Column).Value = Sheets("calcul").Cells(i, 1) Then 'si ça a le meme nom
 
 
                For x = 2 To Len(col.Address) 'boucle sur tous les caractères de l'adresse de col
                    If Mid(col.Address, x, 1) = "$" Then 'condition : repère le second "$" dans l'adresse
                        nomcol = Mid(col.Address, 2, x - 2) 'définit la variable nomcol (extrait la colonne)
                        Exit For 'sort de la boucle
                    End If 'fin de la condition
                Next x 'prochain caractère de l'adresse de col
               Sheets("calcul").Range("B" & i).Value = nomcol
 
 
               Exit For
           End If
       Next
   Next
 

yannickdtk

XLDnaute Nouveau
Re : recuperer nom colonne depuis index

bon, je me suis bricolé un resultat

Code:
If Num > 26 Then
    If Not (Num Mod 26) = 0 Then 'si c'est congru a 0 modulo 26
        Resultat = Chr(Asc("A") + Int(Num / 26) - 1) 
        Resultat = Resultat & Chr(Asc("A") + Num Mod 26 - 1)
    Else 'sinon
        Resultat = Chr(Asc("A") + Int(Num / 26) - 2) 'on bricole
        Resultat = Resultat & "Z" 'Chr(Asc("A") + Num Mod 26 - 1)
    End If
Else
    Resultat = Chr(Asc("A") + Num - 1)
End If
 

Staple1600

XLDnaute Barbatruc
Re : recuperer nom colonne depuis index

Bonjour


Cela devrait pouvoir t'aider


Code:
Sub test()
Dim colonne As String
colonne = _
IIf(Mid(ActiveCell.Address(0, 0), 3, 1) <> vbNullString, Left(ActiveCell.Address(0, 0), 2), Left(ActiveCell.Address(0, 0), 1))
MsgBox colonne
End Sub

Edit: désolé ne pas avoir rafraichi plus tôt
 

tototiti2008

XLDnaute Barbatruc
Re : recuperer nom colonne depuis index

Et puis comme je me suis fatigué à le traduire en VBA :

Code:
Function NomCol(Col As Long) As String
    If Col < 27 Then
        NomCol = Chr(Col + 64)
    Else
        NomCol = Chr(Int((Col - 0.1) / 26) + 64) & Chr(IIf((Col Mod 26) = 0, 26, (Col Mod 26)) + 64)
    End If
End Function
 

tototiti2008

XLDnaute Barbatruc
Re : recuperer nom colonne depuis index

Bonjour Staple1600,

Tout dépend, moi j'avais compris qu'avec en entrée un numéro de colonne (que j'imagine en C3) on voulait la/les lettre(s) de colonnes correspondantes, et pas forcément la/les letrre(s) de la colonne où l'on se trouve...
 

Discussions similaires

Réponses
2
Affichages
323

Statistiques des forums

Discussions
312 576
Messages
2 089 864
Membres
104 294
dernier inscrit
BByd