pb d'interpretation de nom de variable

  • Initiateur de la discussion amand81
  • Date de début
A

amand81

Guest
Bonjour,

je débute en VBA et j'ai déjà un souci:
lorsque je change une date dans ma colonne A, je souhaiterais que dans la dernière colonne de la même feuille, je retrouve le mois et l'année de cette date. En plus, la dernière colonne n'est pas toujours la même, j'ai donc fait une procédure qui la calcule (calcul_nb_colonnes).
Voici mes différentes procédures concernées:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ligne As Integer

calcul_nb_lignes nb_lignes
'calcule le nombre de lignes de ma feuille
calcul_nb_colonnes nb_colonnes, tot_def, valor, code 'retourne des numéros de colonnes spécifiques If Not Application.Intersect(Target, Range(Cells(4, 1), Cells(nb_lignes, 1))) Is Nothing Then

ligne = Target.Row 'je récupère le numéro de la ligne qui vient d être modifié
Cells(ligne, valor + 1) = calcul_mois_annee(ligne) 'la dernière cellule reçoit la valeur calculée
End If
End Sub


et dans un module j'ai:
Function calcul_mois_annee(c As Integer)
Dim mois_annee As Variant
Dim chiffre As Variant


chiffre = '=ADDRESS(c, 1, 4)' 'chiffre reçoit l'adresse de la case qui a été modifiée
mois_annee = '=CONCATENATE(MONTH(INDIRECT(chiffre)),''/'',YEAR(INDIRECT(chiffre)))'
calcul_mois_annee = mois_annee
End Function


Alors, lorsque je modifie une date dans ma feuille, la dernière colonne m'affiche #NOM?
et si je vais dessus, je trouve : =CONCATENER(MOIS(INDIRECT(chiffre));'/';ANNEE(INDIRECT(chiffre)))
Le 'chiffre' n'est pas interprêté. Je ne sais pas comment faire pour qu'il le soit.

Merci d'avance.
 

AlainTech

XLDnaute Nouveau
Bonsoir à tous,

La formule étant particulièrement tordue, je n'ai fait que chercher où était l'erreur.

Mais tu as certainement raison, myDearFriend!. Tu as été plus courageux que moi à essayer de comprendre ce que amand81 voulait faire.
 
A

amand81

Guest
Bonjour,
je vous remercie de votre aide.
J'ai essayé la formule suivante : Cells(ligne, valor + 1).Value = Format(Cells(ligne, 1).Value, 'mm/yyyy'), de myDearFriend mais elle me donnait 01/05/2005 dans la dernière cellule alors que je ne voulais que le mois et l'année (peut être est-ce due à ma version Excel 2000?).

Quant à la solution de AlainTech, je l'ai changé afin de ne plus avoir d'intermédiaire:
mois_annee = '=CONCATENATE(MONTH(INDIRECT(ADDRESS(' & c & ', 1, 4))),''/'',YEAR(INDIRECT(ADDRESS(' & c & ', 1, 4))))'
Et cette formule fonctionne parfaitement ce qui m'arrange.
Désolée, si c'était un peu compliqué à comprendre mais comme je débute, je n'utilise que le peu que je connais.

Merci beaucoup!
 

Discussions similaires

Réponses
22
Affichages
787

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado