Projet Agenda Excel
Bonjour,
Dans un agenda que j'essaie de faire sur Excel ( Version famille 2019) ( Actuellement je suis en aganda papier partagé mais vu la crise actuelle ... j'aimerais qu'on arrête de se passer l'agenda de main à main ...)
J'aimerais vous montrer ce que j'ai réalisé ( J3 "programmation" ... Ayez pitié Svp)
Sur la Feuille " Calendrier".
1/// J'aimerais "Copier" la Cellule "D12" vers la cellule "D13" en incrémentant une partie seulement de la formule "14-01" en "15-01" ... Je pense que c'est mission impossible mais j'aurais aimé avoir votre avis.
2/ Chaque "intilué" envoie vers une feuille, lorsque je le copie, il faut tout changer. C'est assez laborieux ... Impossible d'automatiser cela ?
Merci d'avance pour votre regard de pro
BAV
Nicolas
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Hello,
Bon courage avec tout ça, c'est grisant, Excel ;)
=SIERREUR(SI(INDIRECT("'"&TEXTE(JOUR(C2);"00")&"-"&TEXTE(MOIS(C2);"00")&"'!$D$47";VRAI)>0;"Mammographie";"");"")(formule à écrire en D2 et à étirer vers le bas)
Waw, génial ça fonctionne .... Je vais devoir creuser pour comprendre cette formule là ...
Oui j'avoue que je m'amuse comme un fou avec ça
(Le pire ... C'est ma tête quand je vais montrer ça à l'équipe ... Ils vont me dire " C'est quoi ce machin, Pas question "
Pas grave, je continue . Je reviendrai probablement encore avec des questions
Bonjour brassharr, Salut JoyeuxNoel,
J'ai essayé tant bien que mal d'utiliser la fonction indirect dans l'ancre du lien hypertexte mais, même si ça fonctionne ponctuellement, la référence (en colonne C en l'occurrence) ne se propage pas lorsqu'on copie/colle sur une autre cellule de la colonne D...
Voici une proposition, via VBA, pour avoir la création automatique du lien hypertexte ciblant la bonne feuille. Mais cela nécessite une modification de cellule et ne se met pas à jour par le recalcul d'une formule...
Voici le code :
'MODULE FEUILLE CALENDIER > IL MANQUE UN PETIT R :)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D2:H370")) Is Nothing Then 'plage à adapter au besoin
If Target.Value <> "" Then
If Target.Count = 1 Then 'à désactiver si copier/coller sur plusieurs cellules
Application.EnableEvents = False
Call AjoutHypertexte(Target)
Application.EnableEvents = True
End If 'à désactiver si (si target.count = 1) est désactivée
End If
End If
End Sub
'MODULE STANDARD
Sub AjoutHypertexte(Cible As Range)
Dim ancre$, surtexte$
With Sheets("Calendier")
ancre$ = "'" & Format(.Cells(Cible.Row, 3).Value, "DD-MM") & "'!A1"
surtexte = Cible.Value
.Hyperlinks.Add Anchor:=Cible, Address:="", SubAddress:=ancre, ScreenTip:="Go to " & ancre, TextToDisplay:=surtexte
End With
End SubCdlt,
Un grand merci pour le coup de main, c'est génial de votre part ( et en effet le "Calendrier sans r " ça craint ...)
Merci
Nicolas
Je vais vous mettre des commentaires si vous voulez.
Et dans ce cas, n'oubliez pas de modifier Calendrier dans le code également sinon vous aurez une mauvaise surprise !
'MODULE FEUILLE CALENDIER
Private Sub Worksheet_Change(ByVal Target As Range) 'dès qu'un changement (caractérisé sur la target) a lieu sur la feuille CALENDRIER
If Not Intersect(Target, Range("D2:H370")) Is Nothing Then 'si l'intersection entre la target et la plage mentionnée est vide
'càd : si le changement a lieu sur D2:H370 (on restreint ainsi la plage d'application)
If Target.Value <> "" and target.count = 1 Then 'si la valeur de la cible n'est pas vide et qu'elle est unique
Application.EnableEvents = False 'évènements portant sur la cellule désactivés
Call AjoutHypertexte(Target) 'exécution de la macro AjoutHypertexte
Application.EnableEvents = True 'évènements réactivés
End If
End If
End Sub
'MODULE STANDARD
Sub AjoutHypertexte(Cible As Range) 'macro exécutée lors d'un changement
Dim ancre$, surtexte$
With Sheets("Calendrier") 'sur feuille Calendrier
ancre$ = "'" & Format(.Cells(Cible.Row, 3).Value, "DD-MM") & "'!A1" 'l'ancre (destination hypertexte) = cellule A1 de la feuille correspondant à la date en colonne 3 (sur la même ligne que la cible) au format JJ-MM
surtexte = Cible.Value 'valeur de la Cible (ex : Mammo)
.Hyperlinks.Add Anchor:=Cible, Address:="", SubAddress:=ancre, ScreenTip:="Go to " & ancre, TextToDisplay:=surtexte 'ajout d'un hypertexte sur la cellule Cible dont la destination est ancre et le texte est surtexte
End With
End SubEdit : Voici les commentaires. J'ai un peu modifié la première macro et changé Calendier par Calendrier. Il faudra faire de même sur votre fichier.
Cdlt,