Mise à jour automatique d'un onglet EXCEL

cs_P19 Messages postés 17 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 23 janvier 2013 - 13 déc. 2011 à 14:52
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 13 déc. 2011 à 17:20
Bonjour,
Je recherche un code VBA me permettant la mise à jour automatique d'un onglet de classeur, à partir du moment ou l'on met à jour une cellule située dans le même classeur mais sur une autre feuille.
Je précise que j'ai un niveau débutant dans VBA.
D'avance merci.

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 déc. 2011 à 14:59
Bonjour,

On ne met pas à jour un onglet (cela ne veut rien dire) !
Si tu parles de la mise à jour d'une feuille de calcul (atteignable par un onglet), sois plus précis sur ce point. Veux-tu dire que la valeur d'une ou de plusieurs cellules d'une feuille doit être modifiée en fonction de données présente sur une autre feuille ?
Si oui : précise ce point.
Une simple formule Excel suffit alors dans la plupart des cas


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_P19 Messages postés 17 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 23 janvier 2013
13 déc. 2011 à 15:10
Bonjour,
Milles excuses si je ne suis pas assez précis.
En fait, je souhaite avoir un nom d'onglet d'une feuille qui soit mis à jour automatiquement en fonction d'une saisie dans une cellule sur une autre feuille de mon classeur.
En d'autre terme, j'ai un classeur qui s'appelle "TOTO" et qui à deux feuilles "A" & "B".
Ce que je souhaiterais, c'est que lorsque dans la cellule A1 de mon onglet "B", je saisisse une date par exemple "1/1/2012", alors ma feuille dont le nom est "A" se transforme en "1/1/2012".
Voila, j'espère avoir été plus clair cette fois.
D'avance merci pour votre réponse.
Cordiales salutations.
P19
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 déc. 2011 à 16:15
Je ne vois pas trop à quoi tu t'amuses, ni à quoi cela peut valablement servir.
Mais c'est ton affaire
Alors :
dans l'évènement Change de ta feuille B :
Private Sub Worksheet_Change(ByVal Target As Range)
  Sheets("A").Name = ActiveSheet.Range("A1").Text
End Sub

Avec deux remarques :
1) Ta feuille A ayant ainsi changé de nom, tu ne poyurras le faire qu'une seule fois, à moins de garder en mémoire, dans une variable publique, le nouveau nom et de t'y référer dans le code ci-dessus (au lieu de "A")
2)
je saisisse une date par exemple "1/1/2012", alors ma feuille dont le nom est "A" se transforme en "1/1/2012"

tu eux rire, je pense ?
Il est impossible de nommer une feuille ainsi, que ce soit par code ou manuellement.
Bref ..
T'as eu ta réponse ===>> clique sur le tag "réponse acceptée"


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 déc. 2011 à 16:35
Il vaudra d'ailleurs mieux utiliser ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  If Target ActiveSheet.Range("A1") Then Sheets("A").Name Target.Text
  On Error GoTo 0
End Sub

hein

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 déc. 2011 à 16:44
et si tu veux t'amuser à changer de nom autant de fois que tu le souhaites ===>> voilà, avec une variable static :
Private Sub Worksheet_Change(ByVal Target As Range)
  Static toto As String
  If toto "" Then toto "A"
  On Error Resume Next
  If Target = ActiveSheet.Range("A1") Then
     Sheets(toto).Name = Target.Text
     toto = Target.Text
  End If
  On Error GoTo 0
End Sub


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_P19 Messages postés 17 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 23 janvier 2013
13 déc. 2011 à 16:48
Bonsoir,

Sans vouloir te raconter ma vie, ma recherche vise à l'automatisation d'un planning mensuel dont l'onglet principal porte un nom du genre "échéancier du mois de XXX / AAAA". Dans ma seconde feuille qui est cachée aux utilisateurs, je saisie quelques dates qui vont me servir à calculer tous les éléments de mon échéancier. Cette opération se déroule chaque mois
Je te le rappelle, je suis débutant et cherche à apprendre...
J'ai déjà procéder à ce genre de chose sur un autre tableau mais qui travaillait sur une seule feuille. Dans celle-ci, mon onglet prenait automatiquement la valeur saisie à partir une liste déroulante.
Ici, mon souci est que la valeur saisie ne se situe pas sur la même feuille et donc, je ne parviens pas à l'automatisation voulue.
Merci pour ta réponse.
Cordiales salutation.
P19
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 déc. 2011 à 16:51
dont l'onglet principal porte un nom du genre "échéancier du mois de XXX /
AAAA"

Si tu as réussi à nommer une feuille avec, dans son nom, le caractère mis en rouge ===>>

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_P19 Messages postés 17 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 23 janvier 2013
13 déc. 2011 à 16:56
Re bonsoir,
En ce qui concerne :

Private Sub Worksheet_Change(ByVal Target As Range)
Static toto As String
If toto "" Then toto "A"
On Error Resume Next
If Target = ActiveSheet.Range("A1") Then
Sheets(toto).Name = Target.Text
toto = Target.Text
End If
On Error GoTo 0
End Sub


Est-il possible d’exagérer en te demandant un exemple de feuille que tu me joingne à ton post car j'ai beau essayé, cela ne fonctionne pas.

D'avance merci.

P19
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 déc. 2011 à 16:58
Non !
Ce que je t'ai donné et dit devrait te suffire (et pour ton info : je viens de le tester ===>> fonctionne)
Maintenant, bien évidemment : si tu essayes de donner un nom contenant le caractère "/" ===>> risque pas de fonctionner !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_P19 Messages postés 17 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 23 janvier 2013
13 déc. 2011 à 17:11
Effectivement, cela fonctionne. Merci.
Que dois changer dans mon code si mon nom de fichier change à chaque fois ?
D'avance merci.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 déc. 2011 à 17:20
Que dis-tu ?
Je ne te comprends pas, là !
De quoi s'agit-il ? Sois très précis si tu veux une réponse précxise .

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous