Autres VBA Excel 2007

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 !

phil78960

XLDnaute Nouveau
Bonjour,
J'ai recopié sur ce site une macro qui fonctionne parfaitement (calcul des équinoxes) mais qui me pose en pratique trois problèmes :
1) elle contient l'initialisation d'un paramètre numérique (une année) sous la forme : YY% = 2020
Je voudrais que cette valeur vienne de la cellule nommée "année" située dans la feuille.
2) les résultats (4 valeurs alphanumériques nommées P$, E$, A$ et H$) sont présentés sous la forme : MsgBox P$ & vbLF & E$ & vbLF ... etc ...
Je souhaiterais que ces valeurs viennent dans les cellules de la feuille nommées "Printemps", "Eté", "Automne" et "Hiver"
3) je souhaiterai enfin que cette macro (que j'ai nommée "Equinoxes") se déclenche lorsque je modifie la cellule "année"

J'ai conscience a) que je manipule à peine VBA et b) que je vous demande beaucoup de choses d'un coup !

Merci à l'avance de vos réponses avisées.
 

Pièces jointes

Bonjour Phil,
Un essai en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [année]) Is Nothing Then
        YY% = [année]: N% = 1
        [Printemps] = Format(FEqui_Sols(YY, 1), "dd mmmm yyyy hh:mm:ss")
        [Eté] = Format(FEqui_Sols(YY, 2), "dd mmmm yyyy hh:mm:ss")
        [Automne] = Format(FEqui_Sols(YY, 3), "dd mmmm yyyy hh:mm:ss")
        [Hiver] = Format(FEqui_Sols(YY, 4), "dd mmmm yyyy hh:mm:ss")
    End If
End Sub
 

Pièces jointes

Bonjour Phil,
Un essai en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [année]) Is Nothing Then
        YY% = [année]: N% = 1
        [Printemps] = Format(FEqui_Sols(YY, 1), "dd mmmm yyyy hh:mm:ss")
        [Eté] = Format(FEqui_Sols(YY, 2), "dd mmmm yyyy hh:mm:ss")
        [Automne] = Format(FEqui_Sols(YY, 3), "dd mmmm yyyy hh:mm:ss")
        [Hiver] = Format(FEqui_Sols(YY, 4), "dd mmmm yyyy hh:mm:ss")
    End If
End Sub
Merci à toi. Je vois bien la logique mais je ne dois pas mettre ce code ou il faut car il ne se passe rien ...
Je vais voir avec le classeur de Phil69970.
Encore merci.
 
Bonjour @phil78960
Edit :Bonjour Sylvain

Je te propose ce fichier :

*Merci de ton retour

@Phil69970
Merci à toi Phil chaponnaysard, ça fonctionne parfaitement.
J'ai testé la modification des références fixes par des noms de cellule, par exemples A2 par année ou B2 par Printemps : c'est bon.
Mais maintenant je complique la chose :
Je souhaite inclure le tout dans un autre classeur : si je ne copie que ta feuille évidemment cela ne suffit pas et je ne sais jamais ou coller les macros dans la structure VBA ...
Je te joins le classeur où je veux inclure ta feuille et tout son bazar.
Grand merci à toi pour ton aide.
 

Pièces jointes

Bonjour Phil,
Un essai en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [année]) Is Nothing Then
        YY% = [année]: N% = 1
        [Printemps] = Format(FEqui_Sols(YY, 1), "dd mmmm yyyy hh:mm:ss")
        [Eté] = Format(FEqui_Sols(YY, 2), "dd mmmm yyyy hh:mm:ss")
        [Automne] = Format(FEqui_Sols(YY, 3), "dd mmmm yyyy hh:mm:ss")
        [Hiver] = Format(FEqui_Sols(YY, 4), "dd mmmm yyyy hh:mm:ss")
    End If
End Sub
Pardon à toi, j'ai lu trop vite et j'ai essayé de remplacer moi-même le code d'origine par le tiens ... Évidemment je n'ai pas du faire bien !
J'ai en fait zappé ta pièce jointe qui fonctionne très bien.
Merci beaucoup.
 
Pour sylvanu :
Grand merci. Ta proposition était correcte mais c'est moi qui l'ai mal lu ... Désolé.
Il faut bien que je choisisse UNE solution, le système ne me permet pas d'en choisir deux ...

Pour Phil69970 :
Merci pour ce retour. Je regarderai cela dès que j'aurai un moment (pas aujourd'hui) et je te dirai.
Je pense que je saurai déplacer les résultats là où je le souhaite.😉

A+
 
Merci à toi Phil69970 cela fonctionne très bien.
J'ai déplacé les résultats là où je le souhaitais et j'ai adapté le tout car comme il s'agit d'un calendrier scolaire sur deux années il me fallait Autome-Hiver de l'année puis Printemps-Eté de l'année+1.
Pour ne pas intervenir dans le script j'ai créé un double, nommé différemment, basé sur une autre cellule de la feuille qui contient l'année plus 1. Je déclenche les 2 dans la macro évènementielle et je récupère les résultats A-H dans le premier script et P-E dans le second.
Merci encore à sylvanu également.
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Problème Code VBA
Réponses
9
Affichages
393
Réponses
3
Affichages
399
Réponses
6
Affichages
858
Réponses
8
Affichages
907
Réponses
4
Affichages
1 K
Retour