pb d'interpretation de nom de variable

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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.
 
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!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
7
Affichages
164
Retour