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

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

5 réponses

Répondre au sujet
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 6 juil. 2006 à 08:16
+1
Utile
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>
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de tof008
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 5 juil. 2006 à 16:47
0
Utile
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
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 5 juil. 2006 à 22:03
0
Utile
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
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 6 juil. 2006 à 07:50
0
Utile
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
delattre13 20 Messages postés lundi 2 février 2009Date d'inscription 3 mai 2013 Dernière intervention - 30 oct. 2010 à 12:16
0
Utile
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.