Si classeur deja ouvert activer un timer ou une pose
Résolu
pascal
-
f894009 Messages postés 17413 Statut Membre -
f894009 Messages postés 17413 Statut Membre -
Bonjour,
je vous sollicite car j'aimerai activer un timer ou une pose si mon classeur base de donnée est ouvert,
je m'explique:
j'ai un userform, qui après être rempli, au moment de valider ouvre un classeur "BDT+.xls" pour y coller les valeurs , mais cet userforme peut être utiliser par plusieurs personnes a la fois pour éviter tout beug 'aimerai qu'un timer s'enclenche ou une pose se fasse dans la macro ( exemple 5 secondes) si le classeur "bdt+xls" est ouvert.
car dans se classeur après avoir valider l'userform, les données se copient en feuille1 puis un classeur "BDT+cop.xls" s'ouvre pour y copier les nouvelles données saisies puis "BDT+cop.xls" se ferme ensuite je change de feuille pour imprimer un formulaire, ce qui prend environ 3 a 4 secondes .
Donc comme vous l'avez compris une autre personne peut valider c'est propre saisie pendant les 3 ou 4 secondes est ma macro ne fonctionnera pas car le classeur "BDT+.xls" sera ouvert, (plus de 200 personnes utilise mon userform)
si quelqu'un peut m'aider j'en serais ravi car mes limites en programmation ne me permettent pas de resoudre mon probleme.
merci d'avance
Pascal
je vous sollicite car j'aimerai activer un timer ou une pose si mon classeur base de donnée est ouvert,
je m'explique:
j'ai un userform, qui après être rempli, au moment de valider ouvre un classeur "BDT+.xls" pour y coller les valeurs , mais cet userforme peut être utiliser par plusieurs personnes a la fois pour éviter tout beug 'aimerai qu'un timer s'enclenche ou une pose se fasse dans la macro ( exemple 5 secondes) si le classeur "bdt+xls" est ouvert.
car dans se classeur après avoir valider l'userform, les données se copient en feuille1 puis un classeur "BDT+cop.xls" s'ouvre pour y copier les nouvelles données saisies puis "BDT+cop.xls" se ferme ensuite je change de feuille pour imprimer un formulaire, ce qui prend environ 3 a 4 secondes .
Donc comme vous l'avez compris une autre personne peut valider c'est propre saisie pendant les 3 ou 4 secondes est ma macro ne fonctionnera pas car le classeur "BDT+.xls" sera ouvert, (plus de 200 personnes utilise mon userform)
si quelqu'un peut m'aider j'en serais ravi car mes limites en programmation ne me permettent pas de resoudre mon probleme.
merci d'avance
Pascal
A voir également:
- Si classeur deja ouvert activer un timer ou une pose
- Activer chromecast - Guide
- Activer office gratuitement - Accueil - Bureautique
- Comment activer windows 10 - Guide
- Cle pour activer windows 10 gratuitement - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
3 réponses
Bonjour,
utiliser par plusieurs personnes a la fois Plusieurs PC?????
je change de feuille pour imprimer un formulaire,Peut se faire par VBA????
A+
utiliser par plusieurs personnes a la fois Plusieurs PC?????
je change de feuille pour imprimer un formulaire,Peut se faire par VBA????
A+
voici mon code et mon souhait est en Gras. pour info mes fichiers excel sont sur un reseau d'entreprise voila pourquoi je ne fais pas de partage.
Dim Wb As Workbook
Dim WB1 As Workbook
Dim Ws As Worksheet
Dim WS1 As Worksheet
Dim NumLigneVide As Integer
If TextSection.Text = "" Then
MsgBox "renseignez Votre Section EX (T6000)", vbInformation, "champs obligatoire"
TextSection.SetFocus
ElseIf CboMoteur.Text = "" Then
MsgBox "renseignez le Moteur a l'aide du menu déroulant", vbInformation, "champs obligatoire"
CboMoteur.SetFocus
Else
'set WB= Worbook. etc est l'ouverture de mon classeur oui je copie mes donnée de l'userform,
' c'est la ou je voudrais mettre un timer ou une pose oui une boucle si le classeur "BDT+.xls" est ouvert
' et que des qu'il est fermer la macro l'ouvre et s'execute jusqu'a la fin
'( pour info lors de l'impression plus pas se sont des formule qui recupere les nouvelle donnees de la feuille1 de
'mon "BDT+.xls" pour les remplir dans mon "formulaire" Feuille 2
Set Wb = Workbooks.Open("C:\Users\Propriétaire\Desktop\Turbo+Test\BDT+.xls")
Worksheets("T+general").Activate
'on choisi la ligne vide puis le n° de ligne
Range("B65536").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
NumLigneVide = ActiveSheet.Columns(2).Find("").Row
'on remplit les données dans le tableau
ActiveSheet.Cells(NumLigneVide, 2) = TextItem.Text
ActiveSheet.Cells(NumLigneVide, 3) = CboMoteur.Text
ActiveSheet.Cells(NumLigneVide, 4) = TextRef.Text
ActiveSheet.Cells(NumLigneVide, 5) = TextNumSerie.Text
ActiveSheet.Cells(NumLigneVide, 6) = TextOrdre.Text
ActiveSheet.Cells(NumLigneVide, 7) = TextSection.Text
ActiveSheet.Cells(NumLigneVide, 8) = CboAnomalie.Text
ActiveSheet.Cells(NumLigneVide, 9) = TextEcart.Text
ActiveSheet.Cells(NumLigneVide, 10) = CboNligne.Text
ActiveSheet.Cells(NumLigneVide, 11) = CboNom.Text
ActiveSheet.Cells(NumLigneVide, 12) = Textdate.Text
ActiveSheet.Cells(NumLigneVide, 19) = CboMS7.Text
' couleur de la ligne
Range("a" & (ActiveCell.Row)).Select
Range("a" & (ActiveCell.Row), "l" & (ActiveCell.Row)).Select
Selection.Interior.ColorIndex = 48
'on efface le formulaire et curseur au debut
TextItem.Text = ""
CboMoteur.Text = ""
TextRef.Text = ""
TextNumSerie.Text = ""
TextEcart.Text = ""
TextOrdre.Text = ""
TextSection.Text = ""
CboNligne.Text = ""
CboNom.Text = ""
CboAnomalie.Text = ""
CboMS7.Text = ""
'on cache la fenetre
frmnouvelle1.Hide
Set WB1 = Workbooks.Open("C:\Users\Propriétaire\Desktop\Turbo+Test\BDT+Cop.xls")
Set WS1 = WB1.Worksheets(1)
Workbooks("BDT+Cop.xls.xls").Sheets(1).Range("b4:l10000") = Workbooks("BDT+Cop.xls").Sheets(1).Range("b4:l10000").Value
Workbooks("BDT+Cop.xls").Save
Workbooks("BDT+Cop.xls").Close True
' impression feuille impression
ActiveCell.Offset(0, -1).Select
Selection.Copy
Sheets("impression").Select
Range("I3").Select
ActiveSheet.Paste
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("T+General").Select
'on ferme le classeur
Workbooks("BDT+.xls").Close True
End If
End Sub
Dim Wb As Workbook
Dim WB1 As Workbook
Dim Ws As Worksheet
Dim WS1 As Worksheet
Dim NumLigneVide As Integer
If TextSection.Text = "" Then
MsgBox "renseignez Votre Section EX (T6000)", vbInformation, "champs obligatoire"
TextSection.SetFocus
ElseIf CboMoteur.Text = "" Then
MsgBox "renseignez le Moteur a l'aide du menu déroulant", vbInformation, "champs obligatoire"
CboMoteur.SetFocus
Else
'set WB= Worbook. etc est l'ouverture de mon classeur oui je copie mes donnée de l'userform,
' c'est la ou je voudrais mettre un timer ou une pose oui une boucle si le classeur "BDT+.xls" est ouvert
' et que des qu'il est fermer la macro l'ouvre et s'execute jusqu'a la fin
'( pour info lors de l'impression plus pas se sont des formule qui recupere les nouvelle donnees de la feuille1 de
'mon "BDT+.xls" pour les remplir dans mon "formulaire" Feuille 2
Set Wb = Workbooks.Open("C:\Users\Propriétaire\Desktop\Turbo+Test\BDT+.xls")
Worksheets("T+general").Activate
'on choisi la ligne vide puis le n° de ligne
Range("B65536").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
NumLigneVide = ActiveSheet.Columns(2).Find("").Row
'on remplit les données dans le tableau
ActiveSheet.Cells(NumLigneVide, 2) = TextItem.Text
ActiveSheet.Cells(NumLigneVide, 3) = CboMoteur.Text
ActiveSheet.Cells(NumLigneVide, 4) = TextRef.Text
ActiveSheet.Cells(NumLigneVide, 5) = TextNumSerie.Text
ActiveSheet.Cells(NumLigneVide, 6) = TextOrdre.Text
ActiveSheet.Cells(NumLigneVide, 7) = TextSection.Text
ActiveSheet.Cells(NumLigneVide, 8) = CboAnomalie.Text
ActiveSheet.Cells(NumLigneVide, 9) = TextEcart.Text
ActiveSheet.Cells(NumLigneVide, 10) = CboNligne.Text
ActiveSheet.Cells(NumLigneVide, 11) = CboNom.Text
ActiveSheet.Cells(NumLigneVide, 12) = Textdate.Text
ActiveSheet.Cells(NumLigneVide, 19) = CboMS7.Text
' couleur de la ligne
Range("a" & (ActiveCell.Row)).Select
Range("a" & (ActiveCell.Row), "l" & (ActiveCell.Row)).Select
Selection.Interior.ColorIndex = 48
'on efface le formulaire et curseur au debut
TextItem.Text = ""
CboMoteur.Text = ""
TextRef.Text = ""
TextNumSerie.Text = ""
TextEcart.Text = ""
TextOrdre.Text = ""
TextSection.Text = ""
CboNligne.Text = ""
CboNom.Text = ""
CboAnomalie.Text = ""
CboMS7.Text = ""
'on cache la fenetre
frmnouvelle1.Hide
Set WB1 = Workbooks.Open("C:\Users\Propriétaire\Desktop\Turbo+Test\BDT+Cop.xls")
Set WS1 = WB1.Worksheets(1)
Workbooks("BDT+Cop.xls.xls").Sheets(1).Range("b4:l10000") = Workbooks("BDT+Cop.xls").Sheets(1).Range("b4:l10000").Value
Workbooks("BDT+Cop.xls").Save
Workbooks("BDT+Cop.xls").Close True
' impression feuille impression
ActiveCell.Offset(0, -1).Select
Selection.Copy
Sheets("impression").Select
Range("I3").Select
ActiveSheet.Paste
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("T+General").Select
'on ferme le classeur
Workbooks("BDT+.xls").Close True
End If
End Sub
Re,
Recuperez le code sur ce site et adaptez le a votre fichier:
https://support.microsoft.com/fr-fr/help/291295
Faites des essais pour confirmer que cela fonctionne avec un fichier ouvert sur un répertoire partage. Rendez compte.
Recuperez le code sur ce site et adaptez le a votre fichier:
https://support.microsoft.com/fr-fr/help/291295
Faites des essais pour confirmer que cela fonctionne avec un fichier ouvert sur un répertoire partage. Rendez compte.
merci mais cela ne répond pas a mon probleme, je connais cette méthode moi je veux un arret de la macro si le classeur est ouvert et non un message, je veux que cela reste transparent pour l'utilisateur.
je veux
si classeur "BDT+.xls" ouvert entendre X secondes et retenter l'ouverture .
sinon ouvrir classeur "BDT+.xls
je veux
si classeur "BDT+.xls" ouvert entendre X secondes et retenter l'ouverture .
sinon ouvrir classeur "BDT+.xls
Re,
merci mais cela ne répond pas a mon probleme, je connais cette méthode moi je veux un arret Etes-vous sur de connaitre, parce que c'est en partant de cette methode que vous pourrez faire une "pause" a votre programme en ajoutant l'utilisation de Application.OnTime (voir aide excel). A vous de jouer.
merci mais cela ne répond pas a mon probleme, je connais cette méthode moi je veux un arret Etes-vous sur de connaitre, parce que c'est en partant de cette methode que vous pourrez faire une "pause" a votre programme en ajoutant l'utilisation de Application.OnTime (voir aide excel). A vous de jouer.
formulaire est le nom que j ai donné à ma feuille 2,
ma macro marche très bien , j aimerai y rajouter une pose ou un timer si mon classeur
qui réceptionne les données est ouvert, car comme je l ai expliquer quand il est utilisé c'est 3 à 4 secondes puis fermer aussitôt.
j'ai un userform, dans un fichier par PC ou fichier partage???
"BDT+.xls"fichier unique partage?? vous sert de base de donnee??
"BDT+cop.xls"vous sert a.....??
je change de feuille pour imprimer un formulaire, les donnees viennent d'ou??
A+
j'ai decris seulement le pourquoi j'ai besoin d'une pose ou d'un timer en expliquant ma façon de fonctionner
les classeurs ne sont pas en partage d'ou le classeur "BDT+cop.xls" qui vient récupérer les nouvelles donnée rempli dans le classeur "BDT+.Xls" a chaque nouvelle validation de mon userform, mais mon probleme n'est pas la.
je souhaiterai si classeur " BDT+xls" deja ouvert lors de l'exécution de ma macro une pose ou qu'un timer s'enclencha pour laisser le temps au classeur "BDT+;xls" de se fermer, et que ma macro reprenne au moment ou j'ouvre le classeur BDT+.xls" car comme j'ai expliqué a chaque fois il ne s'ouvre 3 a 4 secondes pour exécuter ce que ma macro demande.
ou puis je mettre mon code pour une meilleure compréhension?
j'ai decris seulement le pourquoi j'ai besoin d'une pose ou d'un timer en expliquant ma façon de fonctionner Est-ce la meilleure?? C'est pour cela que je pose ces questions. Maintenant si vous voulez absolument faire fonctionner ce que vous avez fait: click sur ce lien pour mettre a dipso https://www.cjoint.com/