Autres VBA Excel 2007

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

  • Equinoxes.xlsm
    19.7 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Equinoxes.xlsm
    20.7 KB · Affichages: 5

phil78960

XLDnaute Nouveau
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.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
car il ne se passe rien ...
Dans ma PJ B3 tapez 2022 et cela se remet à jour.
20220120_172656.gif

Dans votre fichier, comme il s'agit d'une macro événementielle, vous mettez le code dans la page considérée :
1642696173538.png
 

phil78960

XLDnaute Nouveau
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

  • Calendrier perpétuel v3.xlsx
    57.5 KB · Affichages: 2

phil78960

XLDnaute Nouveau
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.
 

phil78960

XLDnaute Nouveau
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+
 

phil78960

XLDnaute Nouveau
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.
 

Discussions similaires

  • Résolu(e)
XL pour MAC VBA Excel
Réponses
3
Affichages
230
Réponses
8
Affichages
616

Statistiques des forums

Discussions
311 717
Messages
2 081 854
Membres
101 826
dernier inscrit
dododu89