Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Contribuez
Contribuez Placez ici vos codes, sources, trucs et astuces que vous souhaitez partager avec les membres du club.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2007, 15h20   #1
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 200
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 200
Points : 14 403
Points : 14 403
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut Lettre de la colonne d'une cellule.

Pour une plage nommée
Code :
Split(Range("Plage").Address(1, 0), "$")(0)
Pour un objet Range
Code :
Split(MaPlage.Address(1, 0), "$")(0)
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 13h42   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
On peut aussi simplifier
Code :
1
2
3
Set MaPlage = Range("A1:Z5") ' MaPlage.address => $A$1:$Z$5
NoCol = Split(MaPlage.Address, "$")(1)
MsgBox NoCol
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 13h46   #3
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 200
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 200
Points : 14 403
Points : 14 403
Envoyer un message via Skype™ à Pierre Fauconnier
Salut Joël,

Tu as raison. Pour ma part, je suis d'accord sur
Code :
Split(MaPlage.Address, "$")(1)
Mais on peut ajouter un petit mot d'explication pour la FAQ? C'est peut-être plus sympa que de balancer le code sans commentaires...

Qu'en pensez-vous?
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 16h07   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
On peut en effet expliquer ce que fait Split
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim MaPlage As Range, Tablo As Variant, i As Byte
    Set MaPlage = Range("A1:AH25") ' MaPlage.address => $A$1:$AH$5
    Tablo = Split(MaPlage.Address, "$") 'convertit MaPlage.Adress en tableau
    'donne
        'Tablo(0) = ""
        'Tablo(1) = "A"
        'Tablo(2) = "1:"
        'Tablo(3) = "AH"
        'Tablo(4) = "25"
    'Vérification
    For i = 0 To UBound(Tablo)
        MsgBox Tablo(i)
    Next
    'Et donc...
    ColonneEnLettre = Split(MaPlage.Address, "$")(1) '=> "A"
Quand on affecte Split() à une variable, la variable est convertie en tableau
mais si l'on effecte Split(...)(Index) à une variable, on obtient la valeur correspondant à l'index du tableau Split(...)

De la même manière, on peut obtenir le No de colonne pour un range isolé.
Range(...).Address sans paramètre fournit une adresse absolue ($NoCol$NoLigne)
Donc
Code :
1
2
3
4
Set LeRange = Range("T12") 'Range
'ou 
Set LeRange = Cells(12, 20) 'Range
NoCol = Split(LeRange.address,"$")(1) '=> "T"
ou, sans instancier LeRange
Code :
1
2
3
4
LeRange = Range("T12").address ' String => "$T$12"
'ou
LeRange = Cells(12, 20).address ' String => "$T$12" 
NoCol = Split(LeRange,"$")(1) '=> "T"
Mais est-ce bien ce que tu demandes ?
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 12h33   #5
Membre Expert
 
Avatar de illight
 
Inscription : septembre 2005
Messages : 1 016
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : septembre 2005
Messages : 1 016
Points : 1 044
Points : 1 044
Citation:
Envoyé par ouskel'n'or Voir le message
Code :
    ColonneEnLettre = Split(MaPlage.Address, "$")(1) '=> "AH"
Heuu pourquoi ça renvoie 'AH' ?? ça renvoie pas A plutot a ce moment la ? ou alors je ocmprend pas pourquoi ça renvoie AH
__________________
Avant de poster, et http://www.developpez.com/sources/

N'oubliez pas le

Vous une brute ? faites voir
illight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 13h06   #6
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu as raison, ça demandait une relecture. Merci illight.
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2007, 11h31   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Pour épuiser le sujet avec Office 97, version dans laquelle Split n'existe pas
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub ColonneEnLettre97()
Dim Adresse As String, separateur, LetCol As String, NoLigne As Long
    separateur = "$"
    Adresse = Cells(15, 57).Address
    LetCol = Spliit(Adresse, separateur)(1)
    MsgBox LetCol
End Sub
 
Function Spliit(Adresse, separateur)
Dim Tableau(), Phrase, i As Byte, j As Byte
    Phrase = Adresse
    i = 1
    j = 0
    Do While i < Len(Phrase)
        If Mid(Phrase, i, 1) = separateur Then
            ReDim Preserve Tableau(j)
            Tableau(j) = Left(Phrase, InStr(Phrase, separateur) - 1)
            Phrase = Right(Phrase, Len(Phrase) - InStr(Phrase, separateur))
            j = j + 1
            i = 0
        End If
        i = i + 1
    Loop
    ReDim Preserve Tableau(j)
    Tableau(j) = Phrase
    Spliit = Tableau
End Function
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h32.


 
 
 
 
Partenaires

Hébergement Web