Microsoft 365 bouton de commande controle activeX

cmdavid

XLDnaute Occasionnel
Bonjour a tous,
je veux créer un bouton pour activer la VBA ci-dessous, cette VBA est dans feuil1 (feuil1) et n'est pas une Macro. comment faire?

Option Explicit

Private Sub CommandButton1_Click()

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [c2]) Is Nothing Then Exit Sub
Dim etat As Boolean
With Application
.ScreenUpdating = False
.DisplayAlerts = False
etat = .AskToUpdateLinks
.AskToUpdateLinks = False
Workbooks.Open(Filename:=ThisWorkbook.Path & "\int.xlsm", Password:="a").Close True

.AskToUpdateLinks = etat
End With
ThisWorkbook.Save
End Sub

Merci pour votre aide.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cmdavid,
La sub Worksheet_Change est dite événementielle et est activée sur un changement dans la feuille concernée.
Vous ne pouvez pas l'appeler pour un bouton.
D'ailleurs quand vous ferez Affecter une macro, celle ci ne vous sera pas proposée.
La solution est de recopier cette macro dans un module. Elle pourra ainsi être appelée.
Par contre il faudra la modifier en conséquence, en particulier l' Intersect.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
À quoi peut bien servir cette instruction qui ferme, en enregistrant je ne sais quelle modification, un classeur aussitôt qu'il vient d'être ouvert avec un mot de passe ?
Édition. En réfléchissant je suppose que c'est juste pour qu'une Sub Workbook.Open de son module ThisWorkbook soit exécutée ?
Cela dit vous pouvez toujours faire :
VB:
Private Sub CommandButton1_Click()
Worksheet_Change Me.[C2]
End Sub
 
Dernière édition:

cmdavid

XLDnaute Occasionnel
les fichiers F-A, F-B, F-J doivent être mis a jour a partir du fichier INT.
aujourd'hui ils sont mis a jour avec "validation de données" , je voudrais plutôt un bouton, plus sympa.
le code d'ouverture de tous les fichier est : a.
 

Pièces jointes

  • F-A.xlsm
    25.5 KB · Affichages: 4
  • F-B.xlsm
    23.5 KB · Affichages: 1
  • F-J.xlsm
    23 KB · Affichages: 2
  • INT.xlsm
    16.5 KB · Affichages: 3

cmdavid

XLDnaute Occasionnel
bonne nouvelle, avec le code ci-dessous ca marche.

Private Sub CommandButton1_Click()
With Application
.ScreenUpdating = False
.DisplayAlerts = False
etat = .AskToUpdateLinks
.AskToUpdateLinks = False
Workbooks.Open(Filename:=ThisWorkbook.Path & "\int.xlsm", Password:="a").Close True

.AskToUpdateLinks = etat
End With
ThisWorkbook.Save
End Sub

Private Sub MAJ_Click()
End Sub
 

jmfmarques

XLDnaute Accro
Bonjour Dranreb
Mais je pense toujours que tout ça ne sert absolument à rien.
Quel pessimisme ! :D
Voyons : cela permet de faire passer (et dépenser) du temps, juste pour en passer et en dépenser.
NB : lorsque je m'ennuie, j'utilise personnellement une passoire à gros trous. Cela permet de passer plus vite le temps.
Amitiés et salut à ta franchise, que j'assortis du pouce qui l'honore.
 

Discussions similaires

Statistiques des forums

Discussions
314 486
Messages
2 110 107
Membres
110 667
dernier inscrit
andco