VBA : Lettre colonne quand numéro connu

Résolu/Fermé
doud - 28 juil. 2011 à 09:28
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 28 juil. 2011 à 10:24
Bonjour à tous,

(Désolé pour le titre pas top mais je suis limité par le nombre de caractère)

Je suis en train de faire un programme en vba mais j'ai un problème :

Avec la commande suivante :

colonne_en_cours = ActiveSheet.Range("C4").End(xlToRight).Column


Je regarde la dernière case non vide de la ligne 4 et je retourne sa colonne sous forme de chiffre. J'aimerais plutôt avoir son numéro de lettre car après je vais devoir sélectionner toute cette colonne avec une instruction du type :

Columns("colonne_en_cours" & ":" & "colonne_en_cours").Select

OU
Range(colonne_en_cours & "1").Select puis

ActiveCell.EntireColumn.Select


Mais pour l'instant le code ne tourne pas, je pense à cause du retour d'un chiffre à la place d'une lettre...

Si quelqu'un pouvait m'aider.

Merci d'avance

Doud

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 28/07/2011 à 09:34
Bonjour,
Et pourtant cela fonctionne avec des chiffres aussi!!
Exemple :
Sub test() 
Dim colonne_en_cours As Integer 

colonne_en_cours = 5 

Columns(colonne_en_cours).Select 
MsgBox "" 
Cells(2, colonne_en_cours).Select 
MsgBox "" 
Cells(2, 4).Select 
MsgBox "" 
ActiveCell.EntireColumn.Select 
End Sub


EDIT : autant te prévenir tout de suite : les .Select sont inutiles et ralentissent les macros. A éviter...

Cordialement,
Franck P
1
Merci beaucoup, je n'avais jamais utilisé l'instruction cells().select, toujours range().select.

Doud
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
28 juil. 2011 à 10:24
Grrrr!!! Et qu'est ce que j'ai dit à propos de .Select!!!!!

Tu peux même utiliser Range si tu le souhaites. Exemple :
Range(Cells(1, 1), Cells(1000, colonne_en_cours).Copy
0