' =============================================================== ' 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 ' 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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.