begin process at 2008 08 22 06:04:41
1 229 779 membres
50 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RÉCUPÉRER L'ADRESSE D'UNE CELLULE EXCEL


Information sur la source

Catégorie :Trucs & Astuces Niveau : Débutant Date de création : 04/11/2004 Vu : 8 530

Note :
7 / 10 - par 2 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

Cette routine convertie les coordonnées X et Y d'une cellule en adresse Excel, par exemple (21, 12) donnera U12. Ce peut être utile pour l'utilisation de feuilles Excel à partir de VB.
Ce qui est intéressant est que la fonction s'appelle elle même.

Source

  • Option Explicit
  • Private Function GetColonnes(ByVal s As String, ByVal n As Integer) As String
  • Dim i As Integer
  • Dim j As Integer
  • Dim c As String
  • ' il y a 26 lettres dans l'alphabet, donc si on dépasse ce chiffre c'est qu'il faut plusieurs lettres
  • If n > 26 Then
  • i = Int(n / 26)
  • If (n Mod 26) <> 0 Then
  • j = n Mod 26
  • Else
  • j = 26: i = i - 1
  • End If
  • ' on appelle une nouvelle fois la fonction
  • GetColonnes = s + GetColonnes(Chr(64 + i), j) ' 64 correspond au caractère '@' (juste avant 'A')
  • Else
  • c = Chr(64 + n)
  • GetColonnes = s + c
  • End If
  • End Function
  • Public Function getCell(ByVal X As Integer, ByVal Y As Integer) As String
  • getCell = GetColonnes("", X) & CStr(Y)
  • End Function
  • Private Sub Form_Load()
  • ' Quelques exemples :
  • MsgBox getCell(10, 10) ' donne J10
  • MsgBox getCell(48, 55) ' donne AV55
  • End
  • End Sub
Option Explicit

Private Function GetColonnes(ByVal s As String, ByVal n As Integer) As String
    Dim i As Integer
    Dim j As Integer
    Dim c As String
    
    ' il y a 26 lettres dans l'alphabet, donc si on dépasse ce chiffre c'est qu'il faut plusieurs lettres
    If n > 26 Then
        i = Int(n / 26)
        If (n Mod 26) <> 0 Then
            j = n Mod 26
        Else
            j = 26: i = i - 1
        End If
        ' on appelle une nouvelle fois la fonction
        GetColonnes = s + GetColonnes(Chr(64 + i), j) ' 64 correspond au caractère '@' (juste avant 'A')
    Else
        c = Chr(64 + n)
        GetColonnes = s + c
    End If
End Function

Public Function getCell(ByVal X As Integer, ByVal Y As Integer) As String
    getCell = GetColonnes("", X) & CStr(Y)
End Function

Private Sub Form_Load()
   ' Quelques exemples :
   MsgBox getCell(10, 10) ' donne J10
   MsgBox getCell(48, 55) ' donne AV55
   End
End Sub

Conclusion

C'est vraiment petit, mais pour une première participation...
  • signaler à un administrateur
    Commentaire de ephores le 09/11/2004 14:33:45

    Bonjour,
    c'est bien utile ! bonne continuation j'ai mis 7 !

  • signaler à un administrateur
    Commentaire de MagicDoctor le 20/11/2007 07:05:58 7/10

    Pratique

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS