[VBA Excel] recuperer la lettre d'une colonne [Résolu]

Messages postés
707
Date d'inscription
jeudi 5 mai 2005
Dernière intervention
5 janvier 2010
- - Dernière réponse : delattre13
Messages postés
20
Date d'inscription
lundi 2 février 2009
Dernière intervention
3 mai 2013
- 30 oct. 2010 à 12:16
Hello! Voila mon problème :

Je dois ajouter automatiquement sur une ligne un nouveau mois, puis remplir la colonne de données...
Je fais donc une boucle qui me parcourt la ligne jusqu'au dernier enregistrement, auquel je rajoute 1 pour me placer au bon endroit. C'est la que les problemes arrivent, puisque lorsque je veux "étirer" la formule sur une colonne supplementaire, je recois un message d'erreur : 'la méthode autofill de la classe Range à echouée'.


 


Voila mon code :

'Boucle qui parcourt la ligne jusqu'au premier enregistrement vide
While Cells(2, i) <> ""
i = i + 1
Wend


 



'"etirage" de la formule a la nouvelle cellule 
Range("D2").Select
 Selection.AutoFill Destination:=Range(Cells(2, 4), Cells(i, 2)), Type:=xlFillMonths
 Range(Cells(4, 2), Cells(2, i)).Select








 





(Si la réponse vous convient, appuyez sur réponse acceptée...)





Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
<>
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
707
Date d'inscription
jeudi 5 mai 2005
Dernière intervention
5 janvier 2010
1
Merci
Voiula ce que j'ai trouvé sur un forum! Et ca marche nickel!
Merci à tous pour votre aide!

NumCol = Cells(2, i).Column

lettre = IIf(NumCol > 26, Chr(64 + NumCol \ 26) & Chr(64 + NumCol Mod 26), Chr(64 + NumCol))

(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire< body>

Dire « Merci » 1

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

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de tof008
Messages postés
2247
Date d'inscription
lundi 29 mai 2006
Dernière intervention
29 mai 2008
0
Merci
salut
Selection.AutoFill Destination:=Range("A8:A" & i)
essaie en faisant par un range comme ca au lieu d'utiliser les cells.
Je crois que quand je l'avais fais avec des cells j'avais la meme erreur.

 Drikce 06
Commenter la réponse de drikce06
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
Salut :

Je pense que la méthode de Drikce 06 est la plus appropriée.
Sache qu'effectivement Destination doit être de type Range.

Donc avec ta méthode, ca donnerait ceci :
Dim MaPlage As Range

MaPlage = (Cells(2, 4), Cells(i, 2)
Range("D2").Select

Selection.AutoFill Destination:=MaPlage, Type:=xlFillMonths

MaPlage.Select

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Commenter la réponse de mortalino
Messages postés
707
Date d'inscription
jeudi 5 mai 2005
Dernière intervention
5 janvier 2010
0
Merci
Le gros problême en fait, c'est ce 'i'. En utilisant la methode de Mortalino, je recois le même message d'erreur qu'indiqué plus haut! Je vous en prie aidez moi, ca commence à me faire c....!!!! mdr


Il faudrait juste que je puisse trouver le moyen de remplacer ce 'i' par la lettre correspondante!!!!


Merci à vous pour votre aide! 





(Si la réponse vous convient, appuyez sur réponse acceptée...)





Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
< body>
Commenter la réponse de tof008
Messages postés
20
Date d'inscription
lundi 2 février 2009
Dernière intervention
3 mai 2013
0
Merci
Bonjour,

NumCol = Cells(2, i).Column

lettre = IIf(NumCol > 26, Chr(64 + NumCol \ 26) & Chr(64 + NumCol Mod 26), Chr(64 + NumCol))
Sous VBA Excel
supposons que i=20
c'est impécable lettre = "T"
Mais si i=200 (Sur Excel on peut aller jusqu'à IV soit 256 colonnes)
la formule génére alors une : Erreur d'exécution '5'
Argument ou appel de procédure incorrect.
Si on décompose la formule on se rend compte que l'erreur vient de la fin de la formule :
Chr(64 + NumCol) qui devient Chr(264) et hop on sort de la table ASCII.
C'est balot hein !!
par contre j'ai trouvé une solution qui marche à tous les coups sur le site
frederic.sigonneau.free.fr/Cellules.htm
qui donne ceci

Function Nombre_en_Lettre(Nombre As Long) As String
'// Dana DeLouis
If Nombre > 0 And Nombre < 257 Then
Nombre_en_Lettre = Split(Cells(Nombre).Address, "$")(1)
Else
Nombre_en_Lettre = Error(9) '> Valeur hors contexte
End If
End Function


Sub test()
MsgBox Nombre_en_Lettre(ActiveCell.Column)
MsgBox Nombre_en_Lettre(256)
End Sub

et là ça marche jusqu'à 256
Maintenant que j'ai la lettre il va falloir que le format conditionné marche avec ma sélection.

En tout cas merci à tous de partager vos infos qui sont bien utiles.
Commenter la réponse de delattre13

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.