Mise à jour automatique du contenu de cellules liées (fichier fait par gmb)
Bonjour (et bonjour gmb !) !
Gmb m'a aidé dans mon post précédent (merci!) et je me demandais si vous pouvez m'aider à inclure un code qui fait en sorte que, lorsque l'utilisateur modifie les informations des colonnes # projet, titre de formation, statut déjà entrées préalablement, que celles-ci soient mises à jour automatiquement.
Peut-être en créant une macro qui permet de mettre à jour les données existantes et un bouton qui active celle-ci ? Merci à l'avance pour votre aide (je suis capable d'associer un bouton à la macro, mais le contenu de la macro à développer m'échappe).
Comme je suis novice dans l'utilisation du VBA, est-ce possible de d'inclure des commentaires dans votre code pour que je puisse le comprendre (et m'améliorer) ? Un énorme merci !
(Note, ma publication fait référence à ce post-ci: https://forum.excel-pratique.com/excel/copier-et-renommer-feuille-modele-et-remplir-les-copies-selon-une-liste-144632 )
Voici le fichier de référence qui a été amélioré par gmb (merci!) :
Et le fichier, sans code (au besoin) :
Re-Bonjour!
Avec l'aide d'une collègue, nous avons trouvé l'ajout à effectuer au code initiale, fait par gmb. Voici celui-ci (cela pourra peut-être servir à d'autre) :
Set plage = Range("E3:G" & Range("E" & Rows.Count).End(xlUp).Row) 'On définit la plage utile des données des colonnes E à G
Set fl = ActiveSheet 'On donne un nom à la feuille active
Set fm = Sheets("Modele") 'On donne un nom à la feuille "Modele"
If Not Intersect(Target, plage) Is Nothing Then 'Si on valide une cellule dans la plage définie plus haut
If WorksheetFunction.CountA(Range("E" & Target.Row & ":G" & Target.Row)) = 3 Then 'Si les 3 cellules de la plage ne sont pas vides
Application.EnableEvents = False 'alors on désactive le déclenchement automatiques des macros événementielles
nomF = Range("E" & Target.Row) 'et on donne un nom au contenu de de la cellule en colonne E
For Each f In Worksheets 'On passe toutes les feuille du classeur
If f.Name = nomF Then 'Si une feuille portant ce nom existe
Sheets(nomF).Activate 'on l'active (ou pas)
ActiveSheet.Range("C1") = nomF 'on remplit les données
ActiveSheet.Range("D1") = fl.Range("F" & Target.Row) 'on met à jour le titre
ActiveSheet.Range("D2") = fl.Range("G" & Target.Row) 'on met à jour le statut
fl.Activate
GoTo fin 'et on va à l'adressee "fin"
End If
Next f 'Fin de la boucle
fm.Visible = True 'on affiche la feuille "Modele" (fm)
fm.Activate 'on l'active
fm.Copy after:=fm 'on la duplique
ActiveSheet.Name = nomF 'on renomme sa copie
ActiveSheet.Range("C1") = nomF 'on remplit les données
ActiveSheet.Range("D1") = fl.Range("F" & Target.Row)
ActiveSheet.Range("D2") = fl.Range("G" & Target.Row)
ActiveSheet.Hyperlinks.Add Anchor:=Range("E" & Target.Row), Address:="", SubAddress:= _
"'" & nomF & "'!A1" 'ajoute un lien hypertexte vers la nouvelle feuille
Sheets("Modele").Visible = False 'On masque la feuille "Modele"
fl.Activate 'on active(ou pas) la feuille Liste projets"
GoTo fin
End If
End If
fin:
Application.EnableEvents = True 'On réactive le déclenchement automatique des macros événementtielles
End Sub