[Excel] Récupérer le NUMERO d'une colonne [Résolu/Fermé]

Signaler
Messages postés
37
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
6 mars 2008
-
JohnDKD
Messages postés
1
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
17 juin 2015
-
Bonjour,

Pour une macro, je cherche à récupérer dans l'Integer appelé "plouc" (ouais, on fait ce qu'on peut niveau imagination... :p) le numéro de la colonne de la cellule sélectionnée. Comment faire ?

Attention : 2 mots sont importants dans ce que je viens de dire : "numéro" et "Integer".
En effet, plouc est déclaré comme : dim plouc As Integer
Et ActiveCell.Address donnerait quelque chose comme $C$24 mais moi, je ne veux ni 24, ni C mais... 3 !

Merci à vous !
A voir également:

10 réponses

Messages postés
23327
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
30 mars 2020
5 993
Bonjour,

ActiveCell.Column tout simplement
eric
16
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 71027 internautes nous ont dit merci ce mois-ci

Salut

Microsoft Windows Excel :

Conversion lettre de colonne, Microsoft Windows Excel, en numéro :

Public Function Lettre2NumCol(ByVal Chaine As String) As Long
Dim i As Long, ValeurCh As Long, v As Long
Const ChaineAlpha As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For i = 1 To Len(Chaine)
ValeurCh = InStr(1, ChaineAlpha, Mid(UCase(Chaine), i, 1))
v = v * 26 + ValeurCh
Next
Lettre2NumCol = v
End Function

Conversion numéro de colonne, Microsoft Windows Excel, en lettre :

Public Function NumCol2Lettre(ByVal NumCol As Long) As String
Dim i As Long, x As Long, s As String
For i = 6 To 0 Step -1
x = (26 ^ (i + 1) - 1) / 25 - 1
If NumCol > x Then
s = s & Chr(((NumCol - x - 1) \ 26 ^ i) Mod 26 + 65)
End If
Next i
NumCol2Lettre = s
End Function

Source => http://www.presence-pc.com/forum/ppc/Programmation
/access-recherche-colonne-vide-fichier-excel-sujet-4956-1.htm#t33729

merci .

à+
Messages postés
2
Date d'inscription
vendredi 8 novembre 2013
Statut
Membre
Dernière intervention
11 novembre 2013
2
Ma fonction a évoluée, voici la dernière version:
Fonction à modifier selon votre convenance pour s'appliquer à vos besoins.

Public Function Conv_en_lettre(ByVal NumCol As Long) As String
'
'
' Fonction calculant la ou les lettre(s) d'une colonne à partir de son ordonnée.
'
'
Dim i As Long, s As String
For i = 1 To 0 Step -1
'Car le nombre maximum de colonnes est "iv" soit (9*26^1+22*26^0=)256.
If NumCol >= 26 ^ i Or NumCol = 0 Then
If i >= 1 And NumCol > 26 Then
s = s & Chr(((NumCol - 26) \ 26 ^ i + 1) + 64)
'"\" partie entière de la division seulement
NumCol = NumCol - (((NumCol - 26) \ 26 ^ i + 1) * 26)
'Calcul du deuxième chiffre(maximum possible):
' - retrait des unités: -26
' - calcul du chiffre des dizaines: chiffre_des_dizaines\26 (partie entière)
' - que l'on multiplie par 26
'et que l'on soustrait au nombre de colonnes données.
Else
If NumCol <> 0 then
s = s & Chr(NumCol + 64)
Else
MsgBox "Un numéro de colonnes ne peut être inférieur ou égale à zéro.", vbInformation
`en base 26 (bien entendu)
s= s&Chr (65)
'65 correspond à 'A'
End if
NumCol = -1
End If
End If
Next i
Conv_en_lettre = s
End Function
----------------------------------------------------------------------------------------------------------------------------
Définition d'un bouton permettant la sélection de la colonne correspondant à la date du jour d'un calendrier.

Private Sub CommandButton1_Click()
For Each cel In Range("C2:AG2")
If cel.Value = Day(Date) Then
Columns(Conv_en_lettre(cel.Column)).Select
'cel.Column: renvoie le numéro de la colonne
End If
Next cel
End Sub

Pour les autres, voilà le lien les hébergeant:
https://docs.google.com/document/d/1NrMvV0cP6lDZ3f3HnGYTXxZjQy6mQF9S0Lj2Zka4qCs/edit?usp=sharing
Messages postés
1
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
17 juin 2015
1
Version Excel 2010

Bonjour,

Simplifions, en une seule ligne possible. De plus, ça fonctionne même si la colonne dépasse ZZ ou AAA.

adr1 = Cells(1, NumCol).Address
msgbox Mid(adr1, InStr(adr1, "$") + 1, InStr(2, adr1, "$") - 2)

Merci
Messages postés
729
Date d'inscription
vendredi 24 décembre 2004
Statut
Membre
Dernière intervention
20 août 2010
1 030
bonjour
excuse moi si je réponds un peu à côté, mais par analogie, la fonction "colonne" renvoie bien le numéro de la colonne d'une cellule spécifiée, ça serait peut-etre une piste pour ta macro?
Joel
Messages postés
37
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
6 mars 2008
16
Merci à tous ! :-)
tu recupère C et tu soustrait son code a celui de A tu obtiendra 3
y a surement une methode de la classe cellule qui le fait mais je connait pas
je cherche egalement si quelqu'un connait cette methode
génial ces 2 fonctions , je m'en sert régulièrement
Messages postés
2
Date d'inscription
vendredi 8 novembre 2013
Statut
Membre
Dernière intervention
11 novembre 2013
2
Après pas mal de test, voici ma version pour convertir des numéros de colonnes en lettre:

J'ai passé pas mal de temps car je l'utilise moi-même:

Public Function Conv_en_lettre(ByVal NumCol As Long) As String
'
'
' Fonction calculant la ou les lettre(s) d'une colonne à partir de son ordonnée.
'
'
Dim i As Long, s As String
For i = 1 To 0 Step -1
'Car le nombre maximum de colonnes est "iv" soit (9*26^1+22*26^0=)256.
If NumCol >= 26 ^ i Or NumCol = 0 Then
If i >= 1 And NumCol > 26 Then
s = s & Chr(((NumCol - 26) \ 26 ^ i + 1) + 64)
'"\" partie entière de la division seulement
NumCol = NumCol - (((NumCol - 26) \ 26 ^ i + 1) * 26)
'Calcul du deuxième chiffre(maximum possible):
' - retrait des unités: -26
' - calcul du chiffre des dizaines: chiffre_des_dizaines\26 (partie entière)
' - que l'on multiplie par 26
'et que l'on soustrait au nombre de colonnes données.
Else
s = s & Chr(NumCol + 64)
'65 correspond à 'A'
NumCol = -1
End If


End If
Next i
Conv_en_lettre = s
End Function
Salut

Identifier la position d'une colonne Microsoft Windows Excel depuis son header, et vice versa :
Numérique vers chaîne et chaîne vers numérique :

http://www.codyx.org/snippet_identifier-position-colonne-excel-depuis-son-header-vice_282.aspx

# Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )

merci .

à+