[VBA Excel] recuperer la lettre d'une colonne

Résolu
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 - 5 juil. 2006 à 16:19
delattre13 Messages postés 20 Date d'inscription lundi 2 février 2009 Statut Membre 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
<>

5 réponses

tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
6 juil. 2006 à 08:16
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>
2
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
5 juil. 2006 à 16:47
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 juil. 2006 à 22:03
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 !
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
6 juil. 2006 à 07:50
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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
delattre13 Messages postés 20 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 3 mai 2013
30 oct. 2010 à 12:16
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.
0
Rejoignez-nous