VBA : Macro pour rafraîchir donnée d'une cellule
Résolu/Fermé
JeanBapt
-
29 mai 2013 à 12:15
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 29 mai 2013 à 18:57
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 29 mai 2013 à 18:57
A voir également:
- Rafraichir feuille excel automatiquement
- Excel compter cellule couleur sans vba - Guide
- Mkdir vba ✓ - Forum VB / VBA
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
- Autofill vba ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
3 réponses
jh 15 ans
Messages postés
68
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
22 août 2015
10
29 mai 2013 à 13:44
29 mai 2013 à 13:44
Bonjour JeanBapt,
Essaie avec ceci que j'ai trouvé sur le Net :
Private Sub Workbook_Open()
Calculate
End Sub
Essaie avec ceci que j'ai trouvé sur le Net :
Private Sub Workbook_Open()
Calculate
End Sub
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 260
29 mai 2013 à 13:58
29 mai 2013 à 13:58
Bonjour,
Dans Private Sub Workbook_Open() il faut que tu appelles la macro qui te fait les modifs.
eric
Dans Private Sub Workbook_Open() il faut que tu appelles la macro qui te fait les modifs.
eric
JeanBapt9
Messages postés
5
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
29 mai 2013
29 mai 2013 à 15:12
29 mai 2013 à 15:12
Bonjour,
Merci pour l'indication.
Est-ce que je dois faire comme cela :
Cela n'a pas l'air de fonctionner et j'ai une erreur VBA. Pareil pour :
Merci encore pour l'aide. Je ne suis vraiment pas un pro en matière de code :p
Merci pour l'indication.
Est-ce que je dois faire comme cela :
Feuil1.Worksheet_Change.Calculate
Cela n'a pas l'air de fonctionner et j'ai une erreur VBA. Pareil pour :
Call Feuil1.Worksheet_Change Calculate
Merci encore pour l'aide. Je ne suis vraiment pas un pro en matière de code :p
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 260
29 mai 2013 à 15:35
29 mai 2013 à 15:35
Difficile de répondre sans savoir à quoi ressemble ton fichier et tes codes...
eric
eric
JeanBapt9
Messages postés
5
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
29 mai 2013
29 mai 2013 à 15:40
29 mai 2013 à 15:40
Oui en effet, voici ci-après un exemple :
Sub Worksheet_Change(ByVal Target As Range) With Sheets("BeamOn Data") Dim ad As String ad = Target.Address Select Case ad Case "$B$39": Call HasWebcast(ad) Case "$B$141": Call WebcastDelivery(ad) Case "$B$43": Call WebcastNbPx(ad) Case "$B$42": Call WebcastDur(ad) Case "$B$38": Call Webconf(ad) Case "$B$119": Call WebconfType(ad) Case "$B$52": Call Test(ad) End Select End With End Sub 'Si Webcast ou non Sub HasWebcast(ByVal Target As Variant) If Range(Target) = True Then Sheets("Quote Webcast").Visible = True Sheets("Quote").Visible = False ElseIf Range(Target) = False Then Sheets("Quote Webcast").Visible = False Sheets("Quote").Visible = True End If End Sub 'Type de webcast : Live, On Demand, ect... Sub WebcastDelivery(ByVal Target As Variant) If Range(Target) = "OD" Then Worksheets("Quote Webcast").Rows("34:35").Hidden = True ElseIf Range(Target) = "LV" Then Worksheets("Quote Webcast").Rows("34:34").Hidden = False Worksheets("Quote Webcast").Rows("35:35").Hidden = True Else: Worksheets("Quote Webcast").Rows("34:35").Hidden = False End If End Sub 'Nombre de connexion attendu pour le Webcast Sub WebcastNbPx(ByVal Target As Variant) Dim StdPxAudioStream As Integer StdPxAudioStream = Worksheets("ON24Tarifs").Range("C16").Value If Range(Target).Value > StdPxAudioStream _ Or Range("B42").Value > 60 Then Worksheets("Quote Webcast").Rows("37:38").Hidden = False ElseIf Range(Target).Value <= StdPxAudioStream _ And Range("B42").Value <= 60 Then Worksheets("Quote Webcast").Rows("37:38").Hidden = True End If End Sub 'Durée du Webcast prévu Sub WebcastDur(ByVal Target As Variant) Dim StdPxAudioStream As Integer StdPxAudioStream = Worksheets("ON24Tarifs").Range("C16").Value If Range(Target).Value > 60 _ Or Range("B43").Value > StdPxAudioStream Then Worksheets("Quote Webcast").Rows("37:38").Hidden = False ElseIf Range(Target).Value <= 60 _ And Range("B43").Value <= StdPxAudioStream Then Worksheets("Quote Webcast").Rows("37:38").Hidden = True End If End Sub 'Choix si Webconf ou non avec audio Sub Webconf(ByVal Target As Variant) If Range(Target) = False Then Worksheets("Quote").Rows("34:37").Hidden = True Worksheets("Quote").Rows("38:54").Hidden = True Worksheets("Quote").Rows("106:106").Hidden = True Worksheets("Quote").Rows("109:109").Hidden = True Worksheets("Quote").Rows("111:111").Hidden = True Worksheets("Quote").Range("J9").Value = "No" Worksheets("Quote").Range("J10").Value = "No" End If End Sub
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 260
29 mai 2013 à 16:00
29 mai 2013 à 16:00
Rien n'est clair dans ce que tu veux.
Sais-tu toi au moins ce que tu veux faire ?
Worksheet_Change n'est appelé que si une cellule change.
A l'ouverture aucune cellule n'a changé et toutes les procédures ont été appelées en leur temps.
Si c'est l'une ou plusieurs des procédures que tu veux appeler à l'ouverture met-la dans Open :
HasWebcast(adresse_de_la_cellule) (???)
Bref ton raisonnement et ton but sont incompréhensibles.
Par ailleurs ton With Sheets("BeamOn Data") est inutile puisque tu ne t'en sers pas.
Regarde l'aide sur with
eric
Sais-tu toi au moins ce que tu veux faire ?
Worksheet_Change n'est appelé que si une cellule change.
A l'ouverture aucune cellule n'a changé et toutes les procédures ont été appelées en leur temps.
Si c'est l'une ou plusieurs des procédures que tu veux appeler à l'ouverture met-la dans Open :
HasWebcast(adresse_de_la_cellule) (???)
Bref ton raisonnement et ton but sont incompréhensibles.
Par ailleurs ton With Sheets("BeamOn Data") est inutile puisque tu ne t'en sers pas.
Regarde l'aide sur with
eric
JeanBapt9
Messages postés
5
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
29 mai 2013
29 mai 2013 à 16:37
29 mai 2013 à 16:37
Désolé, si cela ne semble pas clair. Les procédures créent l'ont été lorsque le fichier Excel était utilisé d'une manière manuel (changement de cellule manuelle).
Cependant l'utilisation du fichier a évolué et dorénavant c'est un site Web qui va exporter les data dans les cellules. Mais j'aimerai tout de même pouvoir garder les procédures qui vont :
- cacher ou montrer des lignes
- changer des valeurs dans des cellules
et cela dans d'autres feuilles du fichier et de manière automatique à l'ouverture du fichier.
Je comprends donc qu'il faut que ma Sub soit appelée autrement mais je ne suis pas sur de connaître la réponse à cela.
Encore une fois désolé si tout cela est compliqué.
Merci aussi pour l'information concernant le "With".
Cependant l'utilisation du fichier a évolué et dorénavant c'est un site Web qui va exporter les data dans les cellules. Mais j'aimerai tout de même pouvoir garder les procédures qui vont :
- cacher ou montrer des lignes
- changer des valeurs dans des cellules
et cela dans d'autres feuilles du fichier et de manière automatique à l'ouverture du fichier.
Je comprends donc qu'il faut que ma Sub soit appelée autrement mais je ne suis pas sur de connaître la réponse à cela.
Encore une fois désolé si tout cela est compliqué.
Merci aussi pour l'information concernant le "With".
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 260
29 mai 2013 à 17:23
29 mai 2013 à 17:23
On y vois un peu plus clair...
Mais quand tu vas ouvrir ton fichier rien n'aura changé dedans.
Tu peux lancer les macros à l'ouverture en mettant les sub dans un module standard et ceci dans thisworkbook :
Feuil2 étant la feuille qui t'intéresse.
Mais vu que je ne pense pas que les données y soient car c'est sans doute une autre macro ou un copier-coller qui le fera il n'y a pas grand intéret à les lancer.
Maintenant si elles sont dans un module standard tu peux les appeler de n'importe quelle feuille à condition qu'elles n'attendent pas de paramètre.
Donc :
Sub HasWebcast()
dim Target as range
Target=[B29]
à la place de :
Sub HasWebcast(ByVal Target As Variant)
Je t'ai mis [B29] si c'est une cellule fixe, toujours la même.
Si c'est variable tu mets :
Target=activecell
C'est la cellule sélectionnée sur la feuille qui sera prise en compte
eric
Mais quand tu vas ouvrir ton fichier rien n'aura changé dedans.
Tu peux lancer les macros à l'ouverture en mettant les sub dans un module standard et ceci dans thisworkbook :
Private Sub Workbook_Open() Sheets("Feuil2").Activate Call HasWebcast("$B$39") Call WebcastDelivery("$B$141") Call WebcastNbPx("$B$43") Call WebcastDur("$B$42") Call Webconf("$B$38") 'Call WebconfType("$B$119") 'Call Test("$B$52") End Sub
Feuil2 étant la feuille qui t'intéresse.
Mais vu que je ne pense pas que les données y soient car c'est sans doute une autre macro ou un copier-coller qui le fera il n'y a pas grand intéret à les lancer.
Maintenant si elles sont dans un module standard tu peux les appeler de n'importe quelle feuille à condition qu'elles n'attendent pas de paramètre.
Donc :
Sub HasWebcast()
dim Target as range
Target=[B29]
à la place de :
Sub HasWebcast(ByVal Target As Variant)
Je t'ai mis [B29] si c'est une cellule fixe, toujours la même.
Si c'est variable tu mets :
Target=activecell
C'est la cellule sélectionnée sur la feuille qui sera prise en compte
eric
JeanBapt9
Messages postés
5
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
29 mai 2013
29 mai 2013 à 17:50
29 mai 2013 à 17:50
Merci énormément !!!!
La procédure à lancer à l'ouverture fonctionne comme je le souhaite maintenant ! :D
Très bonne fin de journée et merci encore !
La procédure à lancer à l'ouverture fonctionne comme je le souhaite maintenant ! :D
Très bonne fin de journée et merci encore !
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 260
29 mai 2013 à 18:57
29 mai 2013 à 18:57
ok, je met en résolu pour toi (en haut vers ton titre, pour la prochaine fois)
eric
eric
29 mai 2013 à 13:49
J'ai l'impression qu'Excel ne prend pas en compte ce qu'il y a dans la cellule jusqu'au moment où j'y vais et appuie ensuite sur Entrée. C'est comme si Excel ne prenait pas en compte la valeur de la cellule.