Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exécution intempestive de fonctione lors d'un workbooks.open

20 réponses
Avatar
joel.doucet
Bonjour et merci d'avance pour votre aide.

j'ai un pb lors d'un workbooks.open

lors de l'open, il y a =E9x=E9cution d'un fonction d'un autre module sans
que cela ne soit demand=E9

MODULE 5:

Sub majmat()
statusBarInitial =3D Application.DisplayStatusBar
Application.DisplayStatusBar =3D True
y =3D 6
ws =3D ActiveSheet.Name
Workbooks.Open "Base1.xls"
Sheets("GI").Select
While y < 5000
y =3D y + 1
trouv=E9 =3D False
Workbooks("TB joel.xls").Activate
Sheets(ws).Select

etc...........
---------------------------------------------------------------------------=
--------------------------
MODULE 1 :

Function ValeurMois(Mois As Integer) As String
Select Case Mois
Case 1: ValeurMois =3D "janvier"
Case 2: ValeurMois =3D "f=E9vrier"
Case 3: ValeurMois =3D "mars"
Case 4: ValeurMois =3D "avril"
Case 5: ValeurMois =3D "mai"
Case 6: ValeurMois =3D "juin"
Case 7: ValeurMois =3D "juillet"
Case 8: ValeurMois =3D "ao=FBt"
Case 9: ValeurMois =3D "septembre"
Case 10: ValeurMois =3D "octobre"
Case 11: ValeurMois =3D "novembre"
Case 12: ValeurMois =3D "d=E9cembre"
End Select
End Function
Function RechercheAG(Matricule, Donn=E9e As String)
On Error GoTo ErrRecherche

I =3D 7
While Worksheets("SITUATION").Range("A" & I).Value <> "" And Not
trouv=E9
If Worksheets("SITUATION").Range("A" & I).Value =3D Matricule Then
trouv=E9 =3D True
Else
I =3D I + 1
End If
Wend
If trouv=E9 Then
Select Case Donn=E9e
Case "S"
RechercheAG =3D Worksheets("SITUATION").Range("F" & I).Value
Case "M"
If Worksheets("SITUATION").Range("B" & I) =3D "Introuvable" Then
RechercheAG =3D "introuvable dans le fichier GPMI mais
pr=E9sent dans la base !"
Else
RechercheAG =3D ""
End If
Case "N"
RechercheAG =3D Worksheets("SITUATION").Range("B" & I).Value
Case "P"
RechercheAG =3D Worksheets("SITUATION").Range("C" & I).Value
Case "R"
RechercheAG =3D Worksheets("SITUATION").Range("D" & I).Value
Case "A"
RechercheAG =3D Worksheets("SITUATION").Range("E" & I).Value
Case "I"
RechercheAG =3D I
End Select
Else
Select Case Donn=E9e
Case "S"
RechercheAG =3D "?"
Case "M"
RechercheAG =3D "AG introuvable dans la base !"
Case "N"
RechercheAG =3D "?"
Case "P"
RechercheAG =3D "?"
Case "R"
RechercheAG =3D "?"
Case "A"
RechercheAG =3D "?"
Case "I"
RechercheAG =3D I
End Select
End If

Exit Function

ErrRecherche:
MsgBox Err.Description, vbCritical, "Erreur"
Exit Function
End Function
---------------------------------------------
en pas =E0 pas d=E9taill=E9 tout se passe normalement jusqu'=E0 l'open,
puis la fonction RECHERCHEAV s'=E9x=E9cute 5 fois
puis la fonction VALEURMOIS s'=E9x=E9cute 2 fois
puis l'=E9x=E9cution en s=E9quence de la sub MAJMAT =E0 l'intruction
SHEET("gpmi").select se poursuit normalement.

Je ne comprends d'autant pas que cela ne se produit pas tout le temps

Faut il appeler l'exorciste tout de suite ???

Merci

10 réponses

1 2
Avatar
joel.doucet
J'ajoute que l'ordre et le nombre d'exécutions des 2 fonctions
valeurmois et rechercheag sont aléatoires
Avatar
MichDenis
Quand tu programmes, si tu utilises ce type
de syntaxe, tu limites l'interprétation qu'excel
pourrait faire de ActiveSheet ou quelqu'expressions
qui ne sont pas dûment référencées...

Voici un bout de code ou chaque objet est référencé :

(prendre le temps de définir le type de variables, cela
va aider excel à accélérer le travail)

'----------------------------
Sub majmat()
Dim Y As Integer, Ws As String
Dim StatusBarInitial As Boolean

StatusBarInitial = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Y = 6
With Workbooks("NomDuClasseur.xls")
Ws = .ActiveSheet.Name
End With
With Workbooks("Base1.xls")
.Open
With .Sheets("GI")
While Y < 5000
Y = Y + 1
trouvé = False



End Sub
'----------------------------




a écrit dans le message de news:

Bonjour et merci d'avance pour votre aide.

j'ai un pb lors d'un workbooks.open

lors de l'open, il y a éxécution d'un fonction d'un autre module sans
que cela ne soit demandé

MODULE 5:

Sub majmat()
statusBarInitial = Application.DisplayStatusBar
Application.DisplayStatusBar = True
y = 6
ws = ActiveSheet.Name
Workbooks.Open "Base1.xls"
Sheets("GI").Select
While y < 5000
y = y + 1
trouvé = False
Workbooks("TB joel.xls").Activate
Sheets(ws).Select

etc...........
-----------------------------------------------------------------------------------------------------
MODULE 1 :

Function ValeurMois(Mois As Integer) As String
Select Case Mois
Case 1: ValeurMois = "janvier"
Case 2: ValeurMois = "février"
Case 3: ValeurMois = "mars"
Case 4: ValeurMois = "avril"
Case 5: ValeurMois = "mai"
Case 6: ValeurMois = "juin"
Case 7: ValeurMois = "juillet"
Case 8: ValeurMois = "août"
Case 9: ValeurMois = "septembre"
Case 10: ValeurMois = "octobre"
Case 11: ValeurMois = "novembre"
Case 12: ValeurMois = "décembre"
End Select
End Function
Function RechercheAG(Matricule, Donnée As String)
On Error GoTo ErrRecherche

I = 7
While Worksheets("SITUATION").Range("A" & I).Value <> "" And Not
trouvé
If Worksheets("SITUATION").Range("A" & I).Value = Matricule Then
trouvé = True
Else
I = I + 1
End If
Wend
If trouvé Then
Select Case Donnée
Case "S"
RechercheAG = Worksheets("SITUATION").Range("F" & I).Value
Case "M"
If Worksheets("SITUATION").Range("B" & I) = "Introuvable" Then
RechercheAG = "introuvable dans le fichier GPMI mais
présent dans la base !"
Else
RechercheAG = ""
End If
Case "N"
RechercheAG = Worksheets("SITUATION").Range("B" & I).Value
Case "P"
RechercheAG = Worksheets("SITUATION").Range("C" & I).Value
Case "R"
RechercheAG = Worksheets("SITUATION").Range("D" & I).Value
Case "A"
RechercheAG = Worksheets("SITUATION").Range("E" & I).Value
Case "I"
RechercheAG = I
End Select
Else
Select Case Donnée
Case "S"
RechercheAG = "?"
Case "M"
RechercheAG = "AG introuvable dans la base !"
Case "N"
RechercheAG = "?"
Case "P"
RechercheAG = "?"
Case "R"
RechercheAG = "?"
Case "A"
RechercheAG = "?"
Case "I"
RechercheAG = I
End Select
End If

Exit Function

ErrRecherche:
MsgBox Err.Description, vbCritical, "Erreur"
Exit Function
End Function
---------------------------------------------
en pas à pas détaillé tout se passe normalement jusqu'à l'open,
puis la fonction RECHERCHEAV s'éxécute 5 fois
puis la fonction VALEURMOIS s'éxécute 2 fois
puis l'éxécution en séquence de la sub MAJMAT à l'intruction
SHEET("gpmi").select se poursuit normalement.

Je ne comprends d'autant pas que cela ne se produit pas tout le temps

Faut il appeler l'exorciste tout de suite ???

Merci
Avatar
jo-dou
MichDenis je te remercie pour ta réponse aussi rapide.
comme tu as pu le constater ce sont mes premiers pas en vb

j'ai le message d'erreur suivant

Indice en dehors de la plage (erreur 9)

sur le
with workbooks ("base1.xls")
.open

le classeur est pourtant bien présent.

as tu une idée

Joël
Avatar
MichDenis
| Indice en dehors de la plage (erreur 9)

| sur le
| with workbooks ("base1.xls")
| .open

Erreur 9 signifie que tu tentes de faire référence à un objet
dont le nom n'existe pas

Exemple : Sheets("Feuil6").Select si le nom "Feuil6"
n'existe pas dans ton classeur, tu auras une erreur 9

Ceci est mon erreur ... lors d'un copier-coller
With Workbooks
.open "base1.xls"
End with

Attention, si tu ne mentionnes pas le chemin où est ton
classeur, excel tentera d'ouvrir le fichier dans le répertoire courant...
cela peut jouer de drôle de tour.








a écrit dans le message de news:


MichDenis je te remercie pour ta réponse aussi rapide.
comme tu as pu le constater ce sont mes premiers pas en vb

j'ai le message d'erreur suivant

Indice en dehors de la plage (erreur 9)

sur le
with workbooks ("base1.xls")
.open

le classeur est pourtant bien présent.

as tu une idée

Joël
Avatar
jo-dou
MichDenis

Plus de problème sur l'open ( à condition que je donne le chemin
complet malgrés que le classeur se trouve dans le même répertoire
sinon message introuvable)

Par contre je me retrouve avec le problème initial à savoir
l'exécution de fonctions et de macros de façon aléatoire

retour au point de départ

je comprends pas

pour info ma sub fontionne très bien lorsque je travaille à partir
d'une feuille interne et non d'un classeur externe
Avatar
MichDenis
Qu'est-ce que tu veux dire par :

| pour info ma sub fontionne très bien lorsque je travaille à partir
| d'une feuille interne et non d'un classeur externe




a écrit dans le message de news:


MichDenis

Plus de problème sur l'open ( à condition que je donne le chemin
complet malgrés que le classeur se trouve dans le même répertoire
sinon message introuvable)

Par contre je me retrouve avec le problème initial à savoir
l'exécution de fonctions et de macros de façon aléatoire

retour au point de départ

je comprends pas

pour info ma sub fontionne très bien lorsque je travaille à partir
d'une feuille interne et non d'un classeur externe
Avatar
jo-dou
cad si je cherche les données sur une feuille du workbook au lieu
d'aller les chercher sur une feuille d'un autre workbook


ce que je fais est assez simple :

à partir d'un nom et prénom sur une feuille "2002" ( colonnes A et B
) du workbook "1.xls" je récupère des informations dans la feuille
"GI" du workbook base1.xls et les copie sur la ligne dans "2002"

ce que j'aimerai comprendre c pkoi ça réagit comme ça, savoir ou je
fais un erreur
pour pouvoir continuer mon appli

je te remercie encore pour ton aide
Avatar
MichDenis
Pour copier la plage d'une feuille appartenant à un classeur donné
vers une autre feuille d'une autre classeur

Le principe : SOURCE.Copy DESTINATION
On doit s'assurer que tout est bien référencé.

Workbooks ("base1.xls").Worksheets("NomDeLaFeuille").range("A1:B10").copy _
Worksheets("workbook 1.xls").Worksheets("NomDeLaFeuille").Range("A10")

Attention aux coupures de lignes par le service de messagerie.




a écrit dans le message de news:


cad si je cherche les données sur une feuille du workbook au lieu
d'aller les chercher sur une feuille d'un autre workbook


ce que je fais est assez simple :

à partir d'un nom et prénom sur une feuille "2002" ( colonnes A et B
) du workbook "1.xls" je récupère des informations dans la feuille
"GI" du workbook base1.xls et les copie sur la ligne dans "2002"

ce que j'aimerai comprendre c pkoi ça réagit comme ça, savoir ou je
fais un erreur
pour pouvoir continuer mon appli

je te remercie encore pour ton aide
Avatar
jo-dou
ok merci

mais il faut chercher la bonne ligne. g fé un boucle de lecture pour
ça

as tu une idée pour ce problème d'appel de fonctions de façon
aléatoire lors de l'éxécution du workbook open.

t'as déjà eu ce genre de pb
Avatar
jo-dou
Quelqu'un peut il me venir en aide, je suis bloqué !!!!!!!

Je suis preneur de toutes les idées !!!!

D'avance Merci
1 2