Les Snippets

Connexion

Identifier la position d'une colonne excel depuis son header, et vice versa

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 03/12/2006 18:46:20 et initié par PCPT [Liste]
Vue : 10936
Catégorie(s) : Trucs & Astuces, Algorithme, Divers
Langages dispo pour ce code :
- VB6, VBA
- VBA



Langage : VB6 , VBA
Date ajout : 03/12/2006
Posté par PCPT [Liste]
'  ===============================================================
'        RETOURNE L'INDEX NOMMé (HEADER RéEL) DE LA COLONNE  EXCEL
'                    ----------------------
'  GetColumnHeaderFromIndex  et GetLetterFromNumber indissociables
'  ===============================================================
Function GetColumnHeaderFromIndex(ByVal Index As Integer) As String
    Dim iInt%, iRest%
    If Index > 256 Then
        GetColumnHeaderFromIndex = vbNullString
    ElseIf Index < 27 Then
        GetColumnHeaderFromIndex = GetLetterFromNumber(Index)
    Else
        iInt = Index \ 26: iRest = Index Mod 26
        If iRest = Then iInt = iInt - 1: iRest = 26
        GetColumnHeaderFromIndex = GetLetterFromNumber(iInt) &  GetLetterFromNumber(iRest)
    End If
End Function
Function GetLetterFromNumber(ByVal Number As Integer) As String
    If Number < Or Number > 26 Then GetLetterFromNumber = vbNullString  Else GetLetterFromNumber =  Chr$(Number + 64)
End Function

'  ===============================================================
'                   RETOURNE L'INDEX (VALEUR) DE LA COLONNE  EXCEL
'                    ----------------------
'  GetIndexFromColumnHeader  et GetNumberFromLetter indissociables
'  ===============================================================
Function GetIndexFromColumnHeader(ByVal Header As String) As Integer
    Dim sL$, sR$, iLen%
    iLen = LenB(Header)
    If iLen = Then
        sL = Chr$(0): sR = Header
    ElseIf iLen = Then
        sL = LeftB$(Header, 2): sR = RightB$(Header, 2)
    Else
        sL = Chr$(0): sR = Chr$(0)
    End If
    GetIndexFromColumnHeader = 26 * GetNumberFromLetter(sL) +  GetNumberFromLetter(sR)
End Function
Function GetNumberFromLetter(ByVal Letter As String) As Integer
    GetNumberFromLetter = Asc(Letter) - 64
    If GetNumberFromLetter < Or GetNumberFromLetter >  26 Then GetNumberFromLetter = 0
End Function


'    EXEMPLE D'UTILISATION
Private Sub Form_Load()
    Dim As String
'   numérique vers chaîne
    s = "  1 = " & GetColumnHeaderFromIndex(1) & vbCrLf &  _
        " 26 = " & GetColumnHeaderFromIndex(26) & vbCrLf &  _
        " 30 = " & GetColumnHeaderFromIndex(30) & vbCrLf &  _
        " 52 = " & GetColumnHeaderFromIndex(52) & vbCrLf &  _
        " 59 = " & GetColumnHeaderFromIndex(59) & vbCrLf &  _
        " 78 = " & GetColumnHeaderFromIndex(78) & vbCrLf &  _
        "241 = " & GetColumnHeaderFromIndex(241) & vbCrLf &  _
        "256 = " & GetColumnHeaderFromIndex(256)
    MsgBox s
'   chaîne vers numérique
    s = " A = " & GetIndexFromColumnHeader("A") & vbCrLf & _
        " Z =  " & GetIndexFromColumnHeader("Z") & vbCrLf & _
        "AD =  " & GetIndexFromColumnHeader("AD") & vbCrLf & _
        "AZ =  " & GetIndexFromColumnHeader("AZ") & vbCrLf & _
        "BG =  " & GetIndexFromColumnHeader("BG") & vbCrLf & _
        "BZ =  " & GetIndexFromColumnHeader("BZ") & vbCrLf & _
        "IG =  " & GetIndexFromColumnHeader("IG") & vbCrLf & _
        "IV =  " & GetIndexFromColumnHeader("IV")
    MsgBox s
    Unload Me
End Sub

Langage : VBA
Date ajout : 08/12/2006
Posté par mortalino [Liste]
Public Function GetColumnHeaderFromIndex(ByVal  MyCell As Range) As String
    Dim sColonne As String, sTemp() As String
sColonne = MyCell.Address
sTemp = Split(sColonne, "$")
GetColumnHeaderFromIndex = sTemp(1)
    Erase sTemp
End Function
Public Function GetIndexFromColumnHeader(ByVal  MyCell As Range) As Byte
    Dim sColonne As String
sColonne = MyCell.Column
GetIndexFromColumnHeader = sColonne
End Function

Sub test()
MsgBox GetColumnHeaderFromIndex(Cells(11)) 'retourne A
MsgBox GetColumnHeaderFromIndex(Range("A1")) 'retourne A
MsgBox GetColumnHeaderFromIndex(ActiveCell) 'retourne A (si A1 sélectionnée)
MsgBox GetIndexFromColumnHeader(Cells(11)) 'retourne 1
MsgBox GetIndexFromColumnHeader(Range("A1")) 'retourne 1
MsgBox GetIndexFromColumnHeader(ActiveCell) 'retourne 1 (si A1 sélectionnée)
End Sub
Remarque :
Depuis un classeur, seulement...

Snippets en rapport avec : Position, Excel, Récupérer, Identifier, Header



Codes sources en rapport avec : Position, Excel, Récupérer, Identifier, Header

{Visual Basic, VB6, VB.NET, VB 2005} GESTION DE LA POSITION DE LA SOURIS
Petit programme utilisant une API afin de visualiser la position du curseur et de déplacer celui-ci....

{SQL} COMMENT EXPORTER DES DONNERS VERS EXCEL
cette source existe déjas ici http://www.mysqlfaqs.net/mysql-faqs/Data-Back-Up/Export-Data/How-to-e...

{SQL} COMMENT EXPORTER DES DONNERS VERS EXCEL
cette source existe déjas ici http://www.mysqlfaqs.net/mysql-faqs/Data-Back-Up/Export-Data/How-to-e...

{Visual Basic, VB6, VB.NET, VB 2005} LIEN HYPERTEXTE SOUS EXCEL EN PARTAGE
Création de liens hypertextes sous excel lorsque le classeur est en partage. En effet, lorsque le c...

{Visual Basic, VB6, VB.NET, VB 2005} DÉMINEUR VBA EXCEL
Un petit démineur en VBA Excel avec lageur, hauteur et nombre de mine variable ...

{Visual Basic, VB6, VB.NET, VB 2005} VBA EXCEL AFFICHER UN NUANCIER DES COULEURS AFIN DE CHOISIR UN CODE COLORINDEX A METTRE DANS LE VBA
Cette routine génère dans la feuille active un nuancier des codes couleurs d'Excel (attention de ...

{Visual Basic, VB6, VB.NET, VB 2005} OUVRIR TOUS LES FICHIERS EXCEL D'UN DOSSIER ET DE SES SOUS-DOSSIERS
Petite macro permettant de choisir un dossier puis de parcourir le dossiers et ses sous-dossiers afi...

{Visual Basic, VB6, VB.NET, VB 2005} ÔTER LA PROTECTION D'UNE FEUILLE GRACE À UN BUG D'EXCEL
On savait à quel point excel est une passoire, mais de là à trouver une telle faille !!! Et oui, ...

{Visual Basic, VB6, VB.NET, VB 2005} ÔTER PROTECTION FEUILLE D'UN CLASSEUR EXCEL & TROUVER MOT DE PASSE FICHIER
Version de base Enlever la protection de toutes les feuilles d'un classeur EXCEL. le code qui est ...

{Visual Basic, VB6, VB.NET, VB 2005} RÉPERTOIRE TÉLÉPHONE SIMPLE VB2008 EXPRESS EN LIEN AVEC FICHIER EXCEL (AFFICHAGE DATAGRIDVIEW)
Répertoire téléphone simple qui à pour but pour les débutant comme moi d'utiliser des fonctions de t...