Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2012, 17h09   #1
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Probleme compatibilité macro 2003 -2010

Bonjour à tous et à toutes.



Donc je tente accèder aux données d'un fichier excel nommé "monClasseur.xls" qui sous Excel 2010 à un message demandant le mot de passe de ce fichier Excel.


La même manipulation via la fonction ci -dessous établie sous excel 2003 ouvre le fichier sans demander le mot de passe.
c'est donc une macro qui, normalement, ouvre le fichier "mpnClasseur.xls" et renseigne le mot de passe automatiquement(en parametre) par consequent cette macro bug sous Excel 2010.

Que faudrait-il changer dans le code pour régler cela??


Merci à tous et à toutes
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 On Error Resume Next
    Workbooks(monClasseur).Activate
    If Err.Number <> 0 Then
        Err.Clear
        rep= False
        Application.StatusBar = "Ouverture de la base Hibiscus choisie"
        Workbooks.Open Filename:=Chemin_serveur & monClasseur, Password:=motdepasse
        If Err.Number <> 0 Then
          Affiche = "il y a un probleme avec  " &monClasseur& Chr(10) & Chr(10) 
                         MsgBox( Affiche )
            Application.StatusBar = False
            End
        End If
    Else
        rep = True
    End If
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 17h46   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
As-tu essayé de bloquer les messages

Code :
1
2
3
Application.DisplayAlerts = False
'Ouverture du fichier
Application.DisplayAlerts = True

Autre piste, essai avec l'enregistreur de Macro, tu verras si la procédure diffère

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 10h12   #3
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Bonjour Qwazerty

Le Application.DisplayAlerts = False doit il etre placé avant le On error resume next ?Idem pour Application.DisplayAlerts = true,juste avant la ligne de code suivant Workbooks.Open Filename:=Chemin_serveur & Base_Hibiscus_reelle ?


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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
 
Sub test()
 
On Error Resume Next
    Workbooks(Base_Hibiscus_reelle).Activate
    Application.DisplayAlerts = False
 
 
    If Err.Number <> 0 Then
 
        Err.Clear
        flag_base_en_ligne = False
        Application.StatusBar = "Ouverture de la base "
 
 
 
        'Ouverture du fichier
        Application.DisplayAlerts = True
        Workbooks.Open Filename:=Chemin_serveur & Base_Hibiscus_reelle, Password:=PWH
 
 
 
        If Err.Number <> 0 Then
            msg = "ATTENTION : problème avec la base " & Base_Hibiscus_reelle & Chr(10) & Chr(10) _
                    & "Merci de contacter le SVP en lui précisant le contexte où vous vous trouvez"
            Style = vbOKOnly + vbCritical + vbDefaultButton1
            Title = "       Message d'erreur"
            reponse = MsgBox(msg, Style, Title)
            Application.StatusBar = False
 
        End If
 
 
    Else
        flag_base_en_ligne = True
    End If
End Sub

Quand tu me dit avec l'enregistreur de Macro ,je ne comprends pas très bien?
lorsque je code dans un module,je suis déja dans l'enregistreur de macro .

Merci par avance.

debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 15h28   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Il faudrait déjà essayer de remettre l'affichage des alertes après l'ouverture du fichier. Sinon, autant ne pas le mettre.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 16h01   #5
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut suite réponse

Bonjour Zebre loup,

Comme ceci (code ci-dessous) ?

Par ailleurs ,tu penses que le fait de mettre les alertes à vrai ,ca règle le problème ci dessous :

je tente accèder aux données d'un fichier excel nommé "monClasseur.xls" qui sous Excel 2010 à un message demandant le mot de passe de ce fichier Excel.

La même manipulation via la fonction ci -dessous établie sous excel 2003 ouvre le fichier sans demander le mot de passe.
c'est donc une macro qui, normalement, ouvre le fichier
Code :
"mpnClasseur.xls" et renseigne le mot de passe automatiquement(en parametre)
par consequent cette macro bug sous Excel 2010

Meme si il y a plus le message d'alerte ça conserverait le mot de passe Automatique?

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
25
26
27
 On Error Resume Next
      
        Application.DisplayAlerts = False  

  Workbooks(monClasseur).Activate

    If Err.Number <> 0 Then
        Err.Clear
        rep= False
        Application.StatusBar = "Ouverture de la base"

         'OUVERTURE FICHIER 
        Workbooks.Open Filename:=monClasseur, Password:=motdepasse

       'MESSAGE D'ALERTE A VRAI 
       Application.DisplayAlerts = True  

      If Err.Number <> 0 Then

          Affiche = "il y a un probleme avec "&monClasseur                             
MsgBox( Affiche )
            Application.StatusBar = False
            End
        End If
    Else
        rep = True
    End If
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 17h53   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Je n'avais pas lu en détail ce que tu essayais de faire.
Je suis assez étonné que ça ne marche pas, normalement Workbooks.Open est identique entre 2003 et 2010. Tu es sûr que le PWD est bien renseigné de la même façon dans tes 2 tests ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 13h11   #7
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut suite réponse

Bonjour Zebre Loup,

Oui le mot de passe est bien renseigné dans les deux tests ?

Il n'y aurait pas peut etre un test à faire pour les versions d'excel utilisées?

Je sèche complètement..

Si quelqu'un aurait une idée ,une piste ou une réponse j'achète

Merci à tous et à toutes
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 14h00   #8
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Je n'ai pas d'excel 2010 sous la main mais selon la syntaxe dans l'aide de Microsoft, ça devrait marcher. Le problème est peut-être ailleurs. Sensibilité à la casse ? Ou peut-être que quand tu fais le Activate au début, Excel 2010 essaie déjà de l'ouvrir (Je ne sais pas s'il y a des fonctionnalités intelligente du genre) ?

Enfin, je laisse répondre ceux qui ne sont pas restés à l'époque des dinosaures.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 14h27   #9
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut suite réponse

Re zebrer loup


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
25
26
27
28
29
30
Sub FonctionDeTest()
 
On Error Resume Next
 
        Application.DisplayAlerts = False  
 
  Workbooks(monClasseur).Activate
 
    If Err.Number <> 0 Then
        Err.Clear
        rep= False
        Application.StatusBar = "Ouverture de la base"
 
         'OUVERTURE FICHIER 
        Workbooks.Open Filename:=monClasseur, Password:=motdepasse
 
       'MESSAGE D'ALERTE A VRAI 
       Application.DisplayAlerts = True  
 
      If Err.Number <> 0 Then
 
          Affiche = "il y a un probleme avec "&monClasseur                             
MsgBox( Affiche )
            Application.StatusBar = False
            End
        End If
    Else
        rep = True
    End If
End Sub

Quand j'execute le code ci dessus, effectivement il rentre a vrai dans le deuxieme If et m'affiche Affiche = "il y a un probleme avec "&monClasseur

Par contre lorsque j'execute le code sans la ligne Workbooks(monClasseur).Activate il n'affiche plus il y a un probleme ,cela signifie que ca fonctionne ...MAis je t'avouerai que je n'y comprends rien...
Comment se fait-il qu'il n"y a plus l'erreur lorsque la ligne Workbooks(monClasseur).Activate est supprimée


Merci à toi Zebre loup =)
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 15h25   #10
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Alors, déjà, tu as mis des on error resume next sans on error goto 0, ce qui peut générer pas mal de soucis difficiles à maitriser.
Sinon, je pense que l'on n'a rien résolu, c'est juste qu'il ne rentre pas du tout dans le traitement.

Si tu veux tester si le classeur est déjà ouvert, plutôt que la gestion des erreurs, utilises plutôt une boucle sur les workbooks. Ensuite, on verra ce qui se passe.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 15h55   #11
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut suite réponse

Re zebre loup

j'ai changé la première condition If Err.Number <> 0 Then par If Err.Number = 0 Then il rentre dans ce IF et affiche apres ces deux lignes

Code :
1
2
  Workbooks.Open Filename:=Chemin_serveur & Base_Hibiscus_reelle, Password:=PWH
           Application.DisplayAlerts = True
le classeur est ouvert

Puis j'ai rajouté On Error Resume Next juste avant la 2 eme condition
If Err.Number <> 0 Thenet il n'affiche plus le message d'erreur.

Dans la premiere condition ,après le message le classeur est ouvert que j'ai ajouté volontairement ,j"'ai mis ces deux lignes

Code :
1
2
3
4
5
  For Each wkbBook In Application.Workbooks
' If wkbBook.Windows(1).Visible Then lCount = lCount + 1
MsgBox "le nom du classeur est " & wbbBook.Name
 
Next wkbBook
mais il n'affiche jamais wbbBook.Name

Soit il y a une erreur de synthaxe et c"'est peut etre résolu ou mon bricolage ne sert à rien ...

Help

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Sub test()
 
    Dim wkbBook As Workbook
    Dim lCount As Long
 
 On Error GoTo 0
 On Error Resume Next
   ' Workbooks(Base_Hibiscus_reelle).Activate
 
   Application.DisplayAlerts = False
 
    If Err.Number = 0 Then
       MsgBox "toto"
 
        Err.Clear
        flag_base_en_ligne = False
        Application.StatusBar = "Ouverture de la base Hibiscus choisie"
 
        'Ouverture du fichier
        'Application.DisplayAlerts = True
 
        Workbooks.Open Filename:=Chemin_serveur & Base_Hibiscus_reelle, Password:=PWH
           Application.DisplayAlerts = True
        MsgBox "le classeur est ouvert"
 
    For Each wkbBook In Application.Workbooks
' If wkbBook.Windows(1).Visible Then lCount = lCount + 1
MsgBox "le nom du classeur est " & wbbBook.Name
 
Next wkbBook
 
         On Error Resume Next
        If Err.Number <> 0 Then
            msg = "ATTENTION : problème avec la base " & Base_Hibiscus_reelle & Chr(10) & Chr(10) _
                    & "Merci de contacter le SVP en lui précisant le contexte où vous vous trouvez"
            Style = vbOKOnly + vbCritical + vbDefaultButton1
            Title = "       Message d'erreur"
            reponse = MsgBox(msg, Style, Title)
            Application.StatusBar = False
 
        End If
 
    Else
        flag_base_en_ligne = True
 
    End If
 
End Sub
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 16h10   #12
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Essaie plutôt de t'inspirer de ce code. Et il faut que tu revois la gestion des erreurs car j'ai l'impression que tu n'as pas encore tout compris de ce coté là .

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
25
26
Public Sub OuvertureFichier()
    Dim wb As Workbook
    Dim baseOuverte As Boolean
    Dim nomBaseComplete As String
 
    nomBaseComplete = Chemin_serveur & Base_Hibiscus_reelle
 
    'On vérifie d'abord si le classeur est déjà ouvert
    baseOuverte = False
    For Each wb In Application.Workbooks
        If wb.Path = nomBaseComplete Then baseOuverte = True
    Next wb
 
    'Si le classeur n'était pas déjà ouvert, on l'ouvre
    If Not baseOuverte Then
        On Error Resume Next 'En cas d'erreur, on continue quand même
        Set wb = Workbooks.Open(Filename:=nomBaseComplete, Password:=PWD)
        If Err.Number <> 0 Then 'Si une erreur s'est produite à l'ouverture du fichier
            MsgBox "ATTENTION : problème avec la base " & nomBaseComplete & vbCrLf & vbCrLf _
                & "Merci de contacter le SVP en lui précisant le contexte où vous vous trouvez" _
                & vbCrLf & vbCrLf & Err.Description _
                , vbOKOnly + vbCritical, "Message d'erreur"
        End If
        On Error GoTo 0 'On remet le traitement d'erreur à la normale
    End If
End Sub
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 16h30   #13
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut suite réponse

Re ,


donc je viens d'executer le code ci dessous
en ajoutant cette ligne MsgBox "classeur ouvert ",apres celle ci Set wb = Workbooks.Open(Filename:=nomBaseComplete, Password:=PWD)

Donc le classeur n'etait pas deja ouvert mais il entre quand meme dans le 2 eme If et affiche l'erreur ....!

Comment cela se fait -il ??


Merci à toi

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
25
26
27
28
29
Public Sub OuvertureFichier()
    Dim wb As Workbook
    Dim baseOuverte As Boolean
    Dim nomBaseComplete As String
 
    nomBaseComplete = Chemin_serveur & Base_Hibiscus_reelle
 
    'On vérifie d'abord si le classeur est déjà ouvert
    baseOuverte = False
    For Each wb In Application.Workbooks
        If wb.Path = nomBaseComplete Then baseOuverte = True
    Next wb
 
    'Si le classeur n'était pas déjà ouvert, on l'ouvre
    If Not baseOuverte Then
        On Error Resume Next 'En cas d'erreur, on continue quand même
        Set wb = Workbooks.Open(Filename:=nomBaseComplete, Password:=PWD)
        MsgBox "classeur ouvert "
 
 
        If Err.Number <> 0 Then 'Si une erreur s'est produite à l'ouverture du fichier
            MsgBox "ATTENTION : problème avec la base " & nomBaseComplete & vbCrLf & vbCrLf _
                & "Merci de contacter le SVP en lui précisant le contexte où vous vous trouvez" _
                & vbCrLf & vbCrLf & Err.Description _
                , vbOKOnly + vbCritical, "Message d'erreur"
        End If
        On Error GoTo 0 'On remet le traitement d'erreur à la normale
    End If
End Sub
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 16h40   #14
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Le MsgBox "Classeur Ouvert", il faudrait le mettre après le On Error Goto 0, une fois qu'on est sûr que tout s'est bien passé. D'ailleurs j'ai oublié, mais il faudrait mettre un Exit Sub après le message d'erreur.
Donc a priori, il y a bien un problème à l'ouverture. Que vaut le err.Description qui s'affiche dans la msgbox
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 16h54   #15
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut suite réponse

Re,

Donc j'ajoute apres On Error GoTo 0 ,le message box suivant: MsgBox "classeur ouver

Puis apres le message MsgBox "ATTENTION ...se situant dans la Deuxieme condition,je met le Exit Sub

je recompile et visiblement,il affiche toujours le message d'erreur ...



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
25
26
27
28
29
30
31
32
33
Public Sub OuvertureFichier()
    Dim wb As Workbook
    Dim baseOuverte As Boolean
    Dim nomBaseComplete As String
 
    nomBaseComplete = Chemin_serveur & Base_Hibiscus_reelle
 
    'On vérifie d'abord si le classeur est déjà ouvert
    baseOuverte = False
    For Each wb In Application.Workbooks
        If wb.Path = nomBaseComplete Then baseOuverte = True
    Next wb
 
    'Si le classeur n'était pas déjà ouvert, on l'ouvre
    If Not baseOuverte Then
        On Error Resume Next 'En cas d'erreur, on continue quand même
        Set wb = Workbooks.Open(Filename:=nomBaseComplete, Password:=PWD)
 
 
        If Err.Number <> 0 Then 'Si une erreur s'est produite à l'ouverture du fichier
 
            MsgBox "ATTENTION : problème avec la base " & nomBaseComplete & vbCrLf & vbCrLf _
                & "Merci de contacter le SVP en lui précisant le contexte où vous vous trouvez" _
                & vbCrLf & vbCrLf & Err.Description _
                , vbOKOnly + vbCritical, "Message d'erreur"
                Exit Sub
 
 
        End If
        On Error GoTo 0 'On remet le traitement d'erreur à la normale
         MsgBox "classeur ouvert "
    End If
End Sub
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 17h00   #16
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
C'est bien qu'il y a une erreur à l'ouverture du fichier.
Peux-tu mettre un point d'arrêt sur le Exit Sub et nous donner à cet endroit la valeur de nomBaseComplete et la valeur de err.Description ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 17h15   #17
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut suite réponse

re,

la valeur de NomBaseComplete vaut ""
par contre dans la fenetres variables locales je ne voit pas du tout la valeur err.description...
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 17h20   #18
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Et donc, tu peux en déduire toi-même que Chemin_serveur et Base_Hibiscus_reelle sont vides au moment où tu exécutes ton code !
Forcément, ça ne peut pas marcher, tu lui demandes d'ouvrir un fichier à partir d'un chemin vide.

Sinon, il faut absolument que tu apprennes à utiliser la fenêtre espions, souvent bien plus utile que la fenêtre variables locales. Tu peux par exemple sélectionner err.Description dans le code puis faire click droit / ajouter un espions.

Maintenant, il faut juste que tu vois pourquoi tes variables sont vides. Ce sont des variables globales ? Quand ont-elles été initialisées ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 17h35   #19
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut suite réponse

re zebre loup

effectivement quand je fais du pas à pas avec F8,

Chemin_serveur et Base_Hibiscus_reelle sont bien vides .


Par contre je n'ai pas la suite du code,mais étant donné lorsque c'est éxécuté sous 2003 cela fonctionne je suppose que cela doit etre une variable Globale .?

Tu penses que le pb viendrait d'ou ?
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 17h40   #20
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Franchement, je ne pense pas que le comportement du Open soit différent sous 2003 et 2010. Le problème doit être ailleurs, mais si tu n'as pas le code complet, je ne vois pas ce que je peux faire pour toi !
Et tu ne vas pas t'en sortir en demandant à celui qui a le fichier complet ce qui se passe parce que vu comment la gestion des erreurs est faite à l'envers, toutes les erreurs vont se mélanger et tu ne sauras jamais d'où vient le problème, surtout si tu maîtrises mal le mode pas à pas, les espions, ...
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h09.


 
 
 
 
Partenaires

Hébergement Web