Hello,
J'ai dans une programme VBA une ligne qui ne s'exécute pas, alors que si j'exécute en "pas à pas" elle est prise en compte!
Merci si vous avez une explication ….et une solution à ce mystère.
Version imprimable
Hello,
J'ai dans une programme VBA une ligne qui ne s'exécute pas, alors que si j'exécute en "pas à pas" elle est prise en compte!
Merci si vous avez une explication ….et une solution à ce mystère.
Bonjour,
Toutes nos boules de cristal sont confinées, essaies de mettre un grand miroir connecté face à ton écran pour qu'on puisse voir à quoi ressemble ta macro.
Si tu n'as pas de miroir connecté, publies le code de la macro dans ton prochain post (en indiquant quelle ligne ne s'exécute pas).
Merci Patrick,
Ci-joint
Je veux ouvrir le classeur2 par une macro qui se trouve dans classeur1 (si classeur2 n'est pas déjà ouvert)
Classeur1 et classeur2 dans le même répertoire
Je veux revenir à classeur1 après ouverture de classeur2.
Avec le programme ci-joint pas de problème ça marche.
Mais avec mes fichiers réels ça ne marche pas. Je ne reviens pas à classeur1.
Ce n'est pas semble-t-il un problème de programme mais de fichier (trop gros, trop de macros)? de synchro ? d'excel ?
merci à ceux qui auraient déjà rencontré ce type de problème ou qui auraient des idéesCode:
1
2
3
4
5
6
7 Workbooks("Classeur2.xlsm").Activate If Err.Number <> 0 Then chemin = ActiveWorkbook.Path Workbooks.Open chemin & "\Classeur2.xlsm" End If On Error GoTo 0 Workbooks("Classeur1").Activate
Quand tu publies un code, il faut utiliser le bouton # pour le baliser :
démonstration de l'utilisation du bouton code (#)
Ton code est partiel, il faut la totalité du code qui pose problème (pas d'un exemple).
Merci Patrice,
Le code ne vous apprendra rien puisqu'il fonctionne dans la casi totalité des cas ! Et toujours quand il est exécuté pas a pas.
Son principe est donc OK.
Dans le cas qui m'occupe avec des fichiers dont je me sers, il ne fonctionne pas.
Ma question s'adresse donc à des développeurs qui auraient déjà rencontre ce type d'anomalie explicable (? peut être) par d'autres raisons que le code. Mémoire ? Machine, Excel ? Tempo
Bonjour
En fait ma question plus générale est "Comment expliquer qu'un programme fonctionne en pas a pas et ne fonctionne pas s'il s'execute en continu.
Merci pour vos infos
Au vu de la partie publié, il manque des informations pour être affirmatif sur la cause exacte, mais une chose est certaine: son principe n'est pas Ok dans 100% des cas, loin de là !
Il y a de nombreuses raisons possibles, notamment le multithread.
Merci Patrice pour cette piste.
Je vais me renseigner sur le multithread
2 autres questions subsidiaires :
- Comment shunter (provisoirement) le multithread ?
- Quelles sont les autres pistes (principales)
merci d'avance
- Je n'ai jamais cherché à désactiver le multitâche de l'OS, c'est impensable !
- Autre piste : Supprimer le On Error (non visible sur la partie publiée du code), si tu veux une solution, il faut publier le code !
Patrice,
Ci joint le code reel…..je doute qu'il s'agisse d'un pb de code
Dans ma pratique fichier_master n'est jamais activé..Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub Bilan_PP() On Error Resume Next 'master_fich = classeur actif master_fich = ActiveWorkbook.Name 'Verif ouverture fichier a traiter Workbooks("OPeration_PP.xlsm").Activate 'Si fichier a traiter non encore ouvert If Err.Number <> 0 Then 'Chemin = path commun aux 2 fichiers chemin = ActiveWorkbook.Path Workbooks.Open chemin & "\OPeration_PP.xlsm" End If On Error GoTo 0 Err.Clear 'reactive fichier mster_fich Workbooks(master_fich).Activate End Sub
Si tu as des idées.. merci d'avance
Sinon je fais 2 Sub :
- 1 pour ouvrir le classeur a traiter (s'il n'est pas déjà ouvert)
- 1 pour lancer le traitement a partir du fichier master_fich une fois le fichier ouvert
C'est moins seduisant, moins automatique mais….
Cordialement
Je l'aurais ecrit comme ça :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Option Explicit Sub Bilan_PP() Dim wbkMaster As Workbook Dim wbkOpen As Workbook Set wbkMaster = ActiveWorkbook 'Verif ouverture fichier a traiter On Error Resume Next Set wbkOpen = Workbooks("OPeration_PP.xlsm") On Error GoTo 0 If wbkOpen Is Nothing Then 'Si fichier a traiter non encore ouvert On Error Resume Next Set wbkOpen = Workbooks.Open(wbkMaster.Path & "\OPeration_PP.xlsm") On Error GoTo 0 If wbkOpen Is Nothing Then Err.Raise 53 End If 'reactive fichier mster_fich wbkMaster.Activate End Sub
Merci Patrice
C'est écrit dans une langue (langage) plus académique
Le traitement de err 53 semble avoir été oublié.
Bien cordialement
Patrice,
J'abuse une dernière fois de tes compétences.
Comment fais tu pour te passer des "On error" en particulier de celui de la ligne 7.
Cordialement
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Option Explicit Sub Bilan_PP() Dim wbkMaster As Workbook Dim wbkOpen As Workbook Dim wbk As Workbook Dim ouvert As Boolean Dim nomComplet As String Set wbkMaster = ActiveWorkbook 'Verif ouverture fichier a traiter For Each wbk In Workbooks If wbk.Name = "OPeration_PP.xlsm" Then ouvert = True Next wbk If Not ouvert Then nomComplet = wbkMaster.Path & "\OPeration_PP.xlsm" 'Si fichier a traiter non encore ouvert If Dir(nomComplet) <> "" Then Set wbkOpen = Workbooks.Open(nomComplet) Else MsgBox "Fichier introuvable : " & vbCrLf & nomComplet, vbCritical End If End If 'reactive fichier mster_fich wbkMaster.Activate End Sub
merci encore