Excel Entete

Résolu
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012 - 3 déc. 2006 à 01:29
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 3 déc. 2006 à 18:37
Bonjour,
Je cherche simplement a avoir un dtagridview avec un entete du style d'Excel.
 A, B ,C ,....., ZZ
En gros j'aurais besoin de savoir comment faire pour récupéré la valeur en lettre grace a l'index de la colonne.
JE peu utiliser 26 boucles bien sur..... mais je cherche une facons propre. Merci =:0)

1 réponse

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 déc. 2006 à 18:37
salut,
petite erreur dans mon précédent message (supprimé)

bref, en VB6 (et oui... désolé...), voici ce que çà donne :
et en bonus tu l'as dans les 2 sens

Option Explicit

'   EXEMPLE
D'UTILISATION
Private Sub Form_Load()
    Dim s 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

'
=============================================================
'        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 = 0 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 < 1 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 = 2 Then
        sL = Chr$(0): sR = Header
    ElseIf iLen = 4 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 < 1 Or GetNumberFromLetter >
26 Then GetNumberFromLetter = 0
End Function

<small>Coloration
syntaxique automatique [AFCK] </small>
       
++
PCPT   [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
3
Rejoignez-nous