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 : 5753
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....

{Visual Basic, VB6, VB.NET, VB 2005} COMPARATEUR EXCEL EN MASSE, AMÉLIORATIONS
mabrouklepoux avait proposé un comparateur de fichiers Excel. http://www.vbfrance.com/code.aspx?ID=3...

{Visual Basic, VB6, VB.NET, VB 2005} GETNAMES : RÉCUPÈRE ET ÉCRIT TOUS LES NOMS DE FICHIERS D'UN DOSSIER
J'ai fait ce petit programme tout simple, qui aurait pu être créé par n'importe quel débutant, car j...

{Visual Basic, VB6, VB.NET, VB 2005} SOCKET ASYNCHRONES : SOURCE D'UNE PAGE HTTP D'UN SERVEUR WEB
J'ai pas mal galéré depuis que j'ai perdu mon petit controle Winsock de VB6. En passant sur 2005 on...

{Visual Basic, VB6, VB.NET, VB 2005} EXCEL <> AUTOCAD LT
suite à des demandes régulières sur les liaisons DDE entre Autocad et excel, je vous joins cette ap...

{Visual Basic, VB6, VB.NET, VB 2005} SUBSTITUTION AU CONTROLE REFEDIT D'EXCEL
le Contrôle Refedit est utilisé dans excel pour sélectionner une plage de cellule(s) Cette substitu...

{Visual Basic, VB6, VB.NET, VB 2005} CARNET D'ADRESSE OUTLOOK VERS EXCEL (OFFICE 2003) EN VS 2005
Cette application utilise les assemblys PIA Office 2003, Microsoft.Office.Interop.Outlook et Excel....

{Visual Basic, VB6, VB.NET, VB 2005} ENREGISTRER L'IMAGE D'UN CONTRÔLE
Cette fonction enregistre l'image d'un contrôle (bouton, Label, MSChart ...) dans un fichier image....

{Visual Basic, VB6, VB.NET, VB 2005} GESTION DE BASE DE DONNÉE ACCESS COMPLÈTE AVEC ORIENTÉ OBJET
Alors voici, une gestion de base de donnée ACCESS qui utilise ADO.NET, les requêtes SQL etc... Il y...

{Visual Basic, VB6, VB.NET, VB 2005} RECUPERER DES INFOS OU LES DONNÉES D'UN GRAPHIQUE SANS UTILISER LES EVENEMENTS DANS LES GRAPHIQUES
Ici je propose par l'intermédiaire d'un exemple, une solution alternative aux evenements dans les gr...