Je suis en train de migrer des macros VBA Excel 2003 vers 2007 et je
rencontre le probl=E8me suivant.
Lorsque j'affecte une valeur quelconque =E0 une cellule avec le code
ActiveSheet.Cells(xx,yy).Value=3D"Quelque Chose", Err.Number retourne
syst=E9matiquement 9 sous 2007 alors que sous 2003 il renvoi 0.
Le code ci-dessous met en =E9vidence le probl=E8me.
Public Sub Test ()
Dim i As Long
On Error Resume Next
With ActiveSheet
For i =3D 1 To 100
. Cells (i, "A"). Value =3D i
If Err.Number =3D 0 Then
. Cells (i, "B"). Value =3D "OK"
Else
. Cells (i, "B"). Value =3D "KB (" & Err.Number & "-" &
Err.Description & ")"
End If
Err.Clear
Next
End With
End Sub
Est-ce un bug dans VBA 2007 ou bien est-ce mon code qui d=E9lire, mais
alors pourquoi fonctionne-t-il sous 2003?
Quelqu'un a-t-il d=E9j=E0 rencontr=E9 le probl=E8me?
Y-a-t-il une solution?
Je viens d'essayer ta macro sous 2007 et aucune erreur. 1 à 100 de A1 à A100 et OK de B1 à B100. Bizz! Et si tu copies ta macro dans un nouveau classeur, tu obtiens toujours une erreur ?
Serge
"Jo" a écrit dans le message de news: Bonjour,
Je suis en train de migrer des macros VBA Excel 2003 vers 2007 et je rencontre le problème suivant. Lorsque j'affecte une valeur quelconque à une cellule avec le code ActiveSheet.Cells(xx,yy).Value="Quelque Chose", Err.Number retourne systématiquement 9 sous 2007 alors que sous 2003 il renvoi 0.
Le code ci-dessous met en évidence le problème.
Public Sub Test () Dim i As Long On Error Resume Next With ActiveSheet For i = 1 To 100 . Cells (i, "A"). Value = i If Err.Number = 0 Then . Cells (i, "B"). Value = "OK" Else . Cells (i, "B"). Value = "KB (" & Err.Number & "-" & Err.Description & ")" End If Err.Clear Next End With End Sub
Est-ce un bug dans VBA 2007 ou bien est-ce mon code qui délire, mais alors pourquoi fonctionne-t-il sous 2003? Quelqu'un a-t-il déjà rencontré le problème? Y-a-t-il une solution?
Merci pour votre aide et bonne journée.
Bonjour Jo,
Je viens d'essayer ta macro sous 2007 et aucune erreur.
1 à 100 de A1 à A100 et OK de B1 à B100.
Bizz!
Et si tu copies ta macro dans un nouveau classeur,
tu obtiens toujours une erreur ?
Serge
"Jo" <j.tribaudini@gmail.com> a écrit dans le message de news: ef692087-d3bb-4ec1-83cd-d055ea12e353@r33g2000yqb.googlegroups.com...
Bonjour,
Je suis en train de migrer des macros VBA Excel 2003 vers 2007 et je
rencontre le problème suivant.
Lorsque j'affecte une valeur quelconque à une cellule avec le code
ActiveSheet.Cells(xx,yy).Value="Quelque Chose", Err.Number retourne
systématiquement 9 sous 2007 alors que sous 2003 il renvoi 0.
Le code ci-dessous met en évidence le problème.
Public Sub Test ()
Dim i As Long
On Error Resume Next
With ActiveSheet
For i = 1 To 100
. Cells (i, "A"). Value = i
If Err.Number = 0 Then
. Cells (i, "B"). Value = "OK"
Else
. Cells (i, "B"). Value = "KB (" & Err.Number & "-" &
Err.Description & ")"
End If
Err.Clear
Next
End With
End Sub
Est-ce un bug dans VBA 2007 ou bien est-ce mon code qui délire, mais
alors pourquoi fonctionne-t-il sous 2003?
Quelqu'un a-t-il déjà rencontré le problème?
Y-a-t-il une solution?
Je viens d'essayer ta macro sous 2007 et aucune erreur. 1 à 100 de A1 à A100 et OK de B1 à B100. Bizz! Et si tu copies ta macro dans un nouveau classeur, tu obtiens toujours une erreur ?
Serge
"Jo" a écrit dans le message de news: Bonjour,
Je suis en train de migrer des macros VBA Excel 2003 vers 2007 et je rencontre le problème suivant. Lorsque j'affecte une valeur quelconque à une cellule avec le code ActiveSheet.Cells(xx,yy).Value="Quelque Chose", Err.Number retourne systématiquement 9 sous 2007 alors que sous 2003 il renvoi 0.
Le code ci-dessous met en évidence le problème.
Public Sub Test () Dim i As Long On Error Resume Next With ActiveSheet For i = 1 To 100 . Cells (i, "A"). Value = i If Err.Number = 0 Then . Cells (i, "B"). Value = "OK" Else . Cells (i, "B"). Value = "KB (" & Err.Number & "-" & Err.Description & ")" End If Err.Clear Next End With End Sub
Est-ce un bug dans VBA 2007 ou bien est-ce mon code qui délire, mais alors pourquoi fonctionne-t-il sous 2003? Quelqu'un a-t-il déjà rencontré le problème? Y-a-t-il une solution?
Merci pour votre aide et bonne journée.
Jo
On 12 fév, 09:17, "Tatanka" wrote:
Bonjour Jo,
Je viens d'essayer ta macro sous 2007 et aucune erreur. 1 à 100 de A1 à A100 et OK de B1 à B100. Bizz! Et si tu copies ta macro dans un nouveau classeur, tu obtiens toujours une erreur ?
Serge
Bonjour,
Merci pour ta réponse. Je viens de refaire le test à partir de 0, PC rebooté, nouveau classeur, copié/collé de la macro à partir de ce fil de discussion et j'ai toujours le problème: 1 à 100 de A1 à A100 et KB (9-L'indice n'appartient pas à la sélection) de B1 à B100.
Ma version d'Excel: 12.0.6425.1000 SP2 MSO (12.0.6520.5000)
J'y comprends rien... @+
On 12 fév, 09:17, "Tatanka" <garnote3ENLE...@videotron.ca> wrote:
Bonjour Jo,
Je viens d'essayer ta macro sous 2007 et aucune erreur.
1 à 100 de A1 à A100 et OK de B1 à B100.
Bizz!
Et si tu copies ta macro dans un nouveau classeur,
tu obtiens toujours une erreur ?
Serge
Bonjour,
Merci pour ta réponse.
Je viens de refaire le test à partir de 0, PC rebooté, nouveau
classeur, copié/collé de la macro à partir de ce fil de discussion et
j'ai toujours le problème:
1 à 100 de A1 à A100 et KB (9-L'indice n'appartient pas à la
sélection) de B1 à B100.
Ma version d'Excel: 12.0.6425.1000 SP2 MSO (12.0.6520.5000)
Je viens d'essayer ta macro sous 2007 et aucune erreur. 1 à 100 de A1 à A100 et OK de B1 à B100. Bizz! Et si tu copies ta macro dans un nouveau classeur, tu obtiens toujours une erreur ?
Serge
Bonjour,
Merci pour ta réponse. Je viens de refaire le test à partir de 0, PC rebooté, nouveau classeur, copié/collé de la macro à partir de ce fil de discussion et j'ai toujours le problème: 1 à 100 de A1 à A100 et KB (9-L'indice n'appartient pas à la sélection) de B1 à B100.
Ma version d'Excel: 12.0.6425.1000 SP2 MSO (12.0.6520.5000)
J'y comprends rien... @+
Daniel.C
Bonjour. Peux-tu mettre ton classeur sur www.cjoint.com et pposter ici l'adresse générée ? Daniel
On 12 fév, 09:17, "Tatanka" wrote:
Bonjour Jo,
Je viens d'essayer ta macro sous 2007 et aucune erreur. 1 à 100 de A1 à A100 et OK de B1 à B100. Bizz! Et si tu copies ta macro dans un nouveau classeur, tu obtiens toujours une erreur ?
Serge
Bonjour,
Merci pour ta réponse. Je viens de refaire le test à partir de 0, PC rebooté, nouveau classeur, copié/collé de la macro à partir de ce fil de discussion et j'ai toujours le problème: 1 à 100 de A1 à A100 et KB (9-L'indice n'appartient pas à la sélection) de B1 à B100.
Ma version d'Excel: 12.0.6425.1000 SP2 MSO (12.0.6520.5000)
J'y comprends rien... @+
Bonjour.
Peux-tu mettre ton classeur sur www.cjoint.com et pposter ici l'adresse
générée ?
Daniel
On 12 fév, 09:17, "Tatanka" <garnote3ENLE...@videotron.ca> wrote:
Bonjour Jo,
Je viens d'essayer ta macro sous 2007 et aucune erreur.
1 à 100 de A1 à A100 et OK de B1 à B100.
Bizz!
Et si tu copies ta macro dans un nouveau classeur,
tu obtiens toujours une erreur ?
Serge
Bonjour,
Merci pour ta réponse.
Je viens de refaire le test à partir de 0, PC rebooté, nouveau
classeur, copié/collé de la macro à partir de ce fil de discussion et
j'ai toujours le problème:
1 à 100 de A1 à A100 et KB (9-L'indice n'appartient pas à la
sélection) de B1 à B100.
Ma version d'Excel: 12.0.6425.1000 SP2 MSO (12.0.6520.5000)
Bonjour. Peux-tu mettre ton classeur sur www.cjoint.com et pposter ici l'adresse générée ? Daniel
On 12 fév, 09:17, "Tatanka" wrote:
Bonjour Jo,
Je viens d'essayer ta macro sous 2007 et aucune erreur. 1 à 100 de A1 à A100 et OK de B1 à B100. Bizz! Et si tu copies ta macro dans un nouveau classeur, tu obtiens toujours une erreur ?
Serge
Bonjour,
Merci pour ta réponse. Je viens de refaire le test à partir de 0, PC rebooté, nouveau classeur, copié/collé de la macro à partir de ce fil de discussion et j'ai toujours le problème: 1 à 100 de A1 à A100 et KB (9-L'indice n'appartient pas à la sélection) de B1 à B100.
Ma version d'Excel: 12.0.6425.1000 SP2 MSO (12.0.6520.5000)
J'y comprends rien... @+
Jo
On 12 fév, 13:46, Daniel.C wrote:
Bonjour. Peux-tu mettre ton classeur surwww.cjoint.comet pposter ici l'adresse générée ? Daniel
Voici le classeur épuré de tout le code sauf celui qui pose problème. Il suffit de cliquer sur TEST J'ai testé sur 3 PC différents, le problème se reproduit sur chacun d'eux.
On 12 fév, 13:46, Daniel.C <dcolardelle...@gmail.com> wrote:
Bonjour.
Peux-tu mettre ton classeur surwww.cjoint.comet pposter ici l'adresse
générée ?
Daniel
Voici le classeur épuré de tout le code sauf celui qui pose problème.
Il suffit de cliquer sur TEST
J'ai testé sur 3 PC différents, le problème se reproduit sur chacun
d'eux.
Bonjour. Peux-tu mettre ton classeur surwww.cjoint.comet pposter ici l'adresse générée ? Daniel
Voici le classeur épuré de tout le code sauf celui qui pose problème. Il suffit de cliquer sur TEST J'ai testé sur 3 PC différents, le problème se reproduit sur chacun d'eux.
Je viens de cliquer sur ton bouton « Test » et aucune erreur. Pourquoi ça fonctionne au Québec et pas chez vous ;-) je n'en sais trop rien. Bizz!
Serge
"Jo" a écrit dans le message de news: On 12 fév, 13:46, Daniel.C wrote:
Bonjour. Peux-tu mettre ton classeur surwww.cjoint.comet pposter ici l'adresse générée ? Daniel
Voici le classeur épuré de tout le code sauf celui qui pose problème. Il suffit de cliquer sur TEST J'ai testé sur 3 PC différents, le problème se reproduit sur chacun d'eux.
Je viens de cliquer sur ton bouton « Test » et aucune erreur.
Pourquoi ça fonctionne au Québec et pas chez vous ;-)
je n'en sais trop rien. Bizz!
Serge
"Jo" <j.tribaudini@gmail.com> a écrit dans le message de news: e2f65029-628b-4fed-aadd-a116b9a09d9b@z17g2000yqh.googlegroups.com...
On 12 fév, 13:46, Daniel.C <dcolardelle...@gmail.com> wrote:
Bonjour.
Peux-tu mettre ton classeur surwww.cjoint.comet pposter ici l'adresse
générée ?
Daniel
Voici le classeur épuré de tout le code sauf celui qui pose problème.
Il suffit de cliquer sur TEST
J'ai testé sur 3 PC différents, le problème se reproduit sur chacun
d'eux.
Je viens de cliquer sur ton bouton « Test » et aucune erreur. Pourquoi ça fonctionne au Québec et pas chez vous ;-) je n'en sais trop rien. Bizz!
Serge
"Jo" a écrit dans le message de news: On 12 fév, 13:46, Daniel.C wrote:
Bonjour. Peux-tu mettre ton classeur surwww.cjoint.comet pposter ici l'adresse générée ? Daniel
Voici le classeur épuré de tout le code sauf celui qui pose problème. Il suffit de cliquer sur TEST J'ai testé sur 3 PC différents, le problème se reproduit sur chacun d'eux.
Je ne comprends pas pourquoi tu utilises '------------------------------ On error resume next ...et le test : If Err.Number = 0 Then
End if '------------------------------
Si cela provoque une erreur, dans la fenêtre de l'éditeur de code, barre des menus / outils / références / regarde et décoche la case si une référence est marquée "Manquante".
"Jo" a écrit dans le message de groupe de discussion :
On 12 fév, 13:46, Daniel.C wrote:
Bonjour. Peux-tu mettre ton classeur surwww.cjoint.comet pposter ici l'adresse générée ? Daniel
Voici le classeur épuré de tout le code sauf celui qui pose problème. Il suffit de cliquer sur TEST J'ai testé sur 3 PC différents, le problème se reproduit sur chacun d'eux.
Je ne comprends pas pourquoi tu utilises
'------------------------------
On error resume next ...et le test :
If Err.Number = 0 Then
End if
'------------------------------
Si cela provoque une erreur, dans la fenêtre de l'éditeur de code,
barre des menus / outils / références / regarde et décoche la case
si une référence est marquée "Manquante".
"Jo" <j.tribaudini@gmail.com> a écrit dans le message de groupe de discussion :
e2f65029-628b-4fed-aadd-a116b9a09d9b@z17g2000yqh.googlegroups.com...
On 12 fév, 13:46, Daniel.C <dcolardelle...@gmail.com> wrote:
Bonjour.
Peux-tu mettre ton classeur surwww.cjoint.comet pposter ici l'adresse
générée ?
Daniel
Voici le classeur épuré de tout le code sauf celui qui pose problème.
Il suffit de cliquer sur TEST
J'ai testé sur 3 PC différents, le problème se reproduit sur chacun
d'eux.
Je ne comprends pas pourquoi tu utilises '------------------------------ On error resume next ...et le test : If Err.Number = 0 Then
End if '------------------------------
Si cela provoque une erreur, dans la fenêtre de l'éditeur de code, barre des menus / outils / références / regarde et décoche la case si une référence est marquée "Manquante".
"Jo" a écrit dans le message de groupe de discussion :
On 12 fév, 13:46, Daniel.C wrote:
Bonjour. Peux-tu mettre ton classeur surwww.cjoint.comet pposter ici l'adresse générée ? Daniel
Voici le classeur épuré de tout le code sauf celui qui pose problème. Il suffit de cliquer sur TEST J'ai testé sur 3 PC différents, le problème se reproduit sur chacun d'eux.
Je ne comprends pas pourquoi tu utilises '------------------------------ On error resume next ...et le test : If Err.Number = 0 Then
End if '------------------------------
Il est vrai que dans l'exemple fourni cela parait débile. Voici la partie du code réel qui pose problème:
For iRow = lngFirstRow + 1 To lngLastRow If .Cells(iRow, "A").Value <> "" Then .Cells(iRow, "A").Select If GetPortInfos(.Cells(iRow, "A").Value, .Cells(iRow, "F").Value, strData, Param.DomainName(DomainIndex), Param.User(DomainIndex), Param.Password(DomainIndex)) = 0 Then On Error Resume Next .Cells(iRow, "G").Value = strData(1) If Err.Number = 0 Then .Cells(iRow, "G").Select .Hyperlinks.Add Anchor:=Selection, Address:="http://" & strData(1), TextToDisplay:=strData(1) If Ping(.Cells(iRow, "G").Value, myECHO) = False Then .Cells(iRow, "G").Select Selection.Font.ColorIndex = 3 ' Rouge End If End If On Error GoTo 0 End If End If Next
En fait strData(1) peut exister ou non suivant le résultat de la fonction GetPortInfos, donc plutôt que me prendre la tête à tester si strData est bien un tableau et que l'indice 1 existe il me semble plus simple de tester l'erreur eventuelle renvoyée lors de l'affectation de strData(1) à la cellule.
Si cela provoque une erreur, dans la fenêtre de l'éditeur de code, barre des menus / outils / références / regarde et décoche la case si une référence est marquée "Manquante"
. Aucune référence est marquée "Manquante".
Est-ce que tu reproduit le problème sur ton PC?
Merci pour ton aide. @+
On 12 fév, 16:29, "michdenis" <michde...@hotmail.com> wrote:
Bonjour,
Je ne comprends pas pourquoi tu utilises
'------------------------------
On error resume next ...et le test :
If Err.Number = 0 Then
End if
'------------------------------
Il est vrai que dans l'exemple fourni cela parait débile. Voici la
partie du code réel qui pose problème:
For iRow = lngFirstRow + 1 To lngLastRow
If .Cells(iRow, "A").Value <> "" Then
.Cells(iRow, "A").Select
If GetPortInfos(.Cells(iRow, "A").Value, .Cells(iRow,
"F").Value, strData, Param.DomainName(DomainIndex),
Param.User(DomainIndex), Param.Password(DomainIndex)) = 0 Then
On Error Resume Next
.Cells(iRow, "G").Value = strData(1)
If Err.Number = 0 Then
.Cells(iRow, "G").Select
.Hyperlinks.Add Anchor:=Selection, Address:="http://"
& strData(1), TextToDisplay:=strData(1)
If Ping(.Cells(iRow, "G").Value, myECHO) = False Then
.Cells(iRow, "G").Select
Selection.Font.ColorIndex = 3 ' Rouge
End If
End If
On Error GoTo 0
End If
End If
Next
En fait strData(1) peut exister ou non suivant le résultat de la
fonction GetPortInfos, donc plutôt que me prendre la tête à tester si
strData est bien un tableau et que l'indice 1 existe il me semble plus
simple de tester l'erreur eventuelle renvoyée lors de l'affectation de
strData(1) à la cellule.
Si cela provoque une erreur, dans la fenêtre de l'éditeur de code,
barre des menus / outils / références / regarde et décoche la case
si une référence est marquée "Manquante"
Je ne comprends pas pourquoi tu utilises '------------------------------ On error resume next ...et le test : If Err.Number = 0 Then
End if '------------------------------
Il est vrai que dans l'exemple fourni cela parait débile. Voici la partie du code réel qui pose problème:
For iRow = lngFirstRow + 1 To lngLastRow If .Cells(iRow, "A").Value <> "" Then .Cells(iRow, "A").Select If GetPortInfos(.Cells(iRow, "A").Value, .Cells(iRow, "F").Value, strData, Param.DomainName(DomainIndex), Param.User(DomainIndex), Param.Password(DomainIndex)) = 0 Then On Error Resume Next .Cells(iRow, "G").Value = strData(1) If Err.Number = 0 Then .Cells(iRow, "G").Select .Hyperlinks.Add Anchor:=Selection, Address:="http://" & strData(1), TextToDisplay:=strData(1) If Ping(.Cells(iRow, "G").Value, myECHO) = False Then .Cells(iRow, "G").Select Selection.Font.ColorIndex = 3 ' Rouge End If End If On Error GoTo 0 End If End If Next
En fait strData(1) peut exister ou non suivant le résultat de la fonction GetPortInfos, donc plutôt que me prendre la tête à tester si strData est bien un tableau et que l'indice 1 existe il me semble plus simple de tester l'erreur eventuelle renvoyée lors de l'affectation de strData(1) à la cellule.
Si cela provoque une erreur, dans la fenêtre de l'éditeur de code, barre des menus / outils / références / regarde et décoche la case si une référence est marquée "Manquante"
. Aucune référence est marquée "Manquante".
Est-ce que tu reproduit le problème sur ton PC?
Merci pour ton aide. @+
Jo
On 12 fév, 16:18, "Tatanka" wrote:
Salut Jo,
Je viens de cliquer sur ton bouton « Test » et aucune erreur. Pourquoi ça fonctionne au Québec et pas chez vous ;-) je n'en sais trop rien. Bizz!
Serge
j'aimerais bien venir vous voir au Québec, mais je pense pas que ma boite veuille bien déménager pour que la macro fonctionne ;-)
Merci tout de même pour ton aide. @+
On 12 fév, 16:18, "Tatanka" <garnote3ENLE...@videotron.ca> wrote:
Salut Jo,
Je viens de cliquer sur ton bouton « Test » et aucune erreur.
Pourquoi ça fonctionne au Québec et pas chez vous ;-)
je n'en sais trop rien. Bizz!
Serge
j'aimerais bien venir vous voir au Québec, mais je pense pas que ma
boite veuille bien déménager pour que la macro fonctionne ;-)
Je viens de cliquer sur ton bouton « Test » et aucune erreur. Pourquoi ça fonctionne au Québec et pas chez vous ;-) je n'en sais trop rien. Bizz!
Serge
j'aimerais bien venir vous voir au Québec, mais je pense pas que ma boite veuille bien déménager pour que la macro fonctionne ;-)
Merci tout de même pour ton aide. @+
michdenis
À partir de ton code, c'est difficile de savoir ... mais une erreur 9 est générée à chaque fois que la référence à un objet est inadéquate
Exemple : le message d'erreur si je n'ai pas 5 feuilles au moins dans le classeur x = Sheets(5).Name Ce pourrait être le nom de la feuille Sheets("MonNom").range(...) qui est inexistant ou a une faute d'orthographe. Cela s'applique aussi au nom des objets dans une feuille dont on fait une référence inadéquate.
Cela devrait orienter ta recherche pour trouver le pépin de ta procédure !
"Jo" a écrit dans le message de groupe de discussion :
On 12 fév, 16:29, "michdenis" wrote:
Bonjour,
Je ne comprends pas pourquoi tu utilises '------------------------------ On error resume next ...et le test : If Err.Number = 0 Then
End if '------------------------------
Il est vrai que dans l'exemple fourni cela parait débile. Voici la partie du code réel qui pose problème:
For iRow = lngFirstRow + 1 To lngLastRow If .Cells(iRow, "A").Value <> "" Then .Cells(iRow, "A").Select If GetPortInfos(.Cells(iRow, "A").Value, .Cells(iRow, "F").Value, strData, Param.DomainName(DomainIndex), Param.User(DomainIndex), Param.Password(DomainIndex)) = 0 Then On Error Resume Next .Cells(iRow, "G").Value = strData(1) If Err.Number = 0 Then .Cells(iRow, "G").Select .Hyperlinks.Add Anchor:=Selection, Address:="http://" & strData(1), TextToDisplay:=strData(1) If Ping(.Cells(iRow, "G").Value, myECHO) = False Then .Cells(iRow, "G").Select Selection.Font.ColorIndex = 3 ' Rouge End If End If On Error GoTo 0 End If End If Next
En fait strData(1) peut exister ou non suivant le résultat de la fonction GetPortInfos, donc plutôt que me prendre la tête à tester si strData est bien un tableau et que l'indice 1 existe il me semble plus simple de tester l'erreur eventuelle renvoyée lors de l'affectation de strData(1) à la cellule.
Si cela provoque une erreur, dans la fenêtre de l'éditeur de code, barre des menus / outils / références / regarde et décoche la case si une référence est marquée "Manquante"
. Aucune référence est marquée "Manquante".
Est-ce que tu reproduit le problème sur ton PC?
Merci pour ton aide. @+
À partir de ton code, c'est difficile de savoir ...
mais une erreur 9 est générée à chaque fois
que la référence à un objet est inadéquate
Exemple :
le message d'erreur si je n'ai pas 5 feuilles au moins dans le classeur
x = Sheets(5).Name
Ce pourrait être le nom de la feuille
Sheets("MonNom").range(...) qui est inexistant ou a une faute
d'orthographe.
Cela s'applique aussi au nom des objets dans une feuille dont
on fait une référence inadéquate.
Cela devrait orienter ta recherche pour trouver le pépin de ta procédure !
"Jo" <j.tribaudini@gmail.com> a écrit dans le message de groupe de discussion :
329558ee-ad72-4bd6-9186-b28a0b8c147e@m16g2000yqc.googlegroups.com...
On 12 fév, 16:29, "michdenis" <michde...@hotmail.com> wrote:
Bonjour,
Je ne comprends pas pourquoi tu utilises
'------------------------------
On error resume next ...et le test :
If Err.Number = 0 Then
End if
'------------------------------
Il est vrai que dans l'exemple fourni cela parait débile. Voici la
partie du code réel qui pose problème:
For iRow = lngFirstRow + 1 To lngLastRow
If .Cells(iRow, "A").Value <> "" Then
.Cells(iRow, "A").Select
If GetPortInfos(.Cells(iRow, "A").Value, .Cells(iRow,
"F").Value, strData, Param.DomainName(DomainIndex),
Param.User(DomainIndex), Param.Password(DomainIndex)) = 0 Then
On Error Resume Next
.Cells(iRow, "G").Value = strData(1)
If Err.Number = 0 Then
.Cells(iRow, "G").Select
.Hyperlinks.Add Anchor:=Selection, Address:="http://"
& strData(1), TextToDisplay:=strData(1)
If Ping(.Cells(iRow, "G").Value, myECHO) = False Then
.Cells(iRow, "G").Select
Selection.Font.ColorIndex = 3 ' Rouge
End If
End If
On Error GoTo 0
End If
End If
Next
En fait strData(1) peut exister ou non suivant le résultat de la
fonction GetPortInfos, donc plutôt que me prendre la tête à tester si
strData est bien un tableau et que l'indice 1 existe il me semble plus
simple de tester l'erreur eventuelle renvoyée lors de l'affectation de
strData(1) à la cellule.
Si cela provoque une erreur, dans la fenêtre de l'éditeur de code,
barre des menus / outils / références / regarde et décoche la case
si une référence est marquée "Manquante"
À partir de ton code, c'est difficile de savoir ... mais une erreur 9 est générée à chaque fois que la référence à un objet est inadéquate
Exemple : le message d'erreur si je n'ai pas 5 feuilles au moins dans le classeur x = Sheets(5).Name Ce pourrait être le nom de la feuille Sheets("MonNom").range(...) qui est inexistant ou a une faute d'orthographe. Cela s'applique aussi au nom des objets dans une feuille dont on fait une référence inadéquate.
Cela devrait orienter ta recherche pour trouver le pépin de ta procédure !
"Jo" a écrit dans le message de groupe de discussion :
On 12 fév, 16:29, "michdenis" wrote:
Bonjour,
Je ne comprends pas pourquoi tu utilises '------------------------------ On error resume next ...et le test : If Err.Number = 0 Then
End if '------------------------------
Il est vrai que dans l'exemple fourni cela parait débile. Voici la partie du code réel qui pose problème:
For iRow = lngFirstRow + 1 To lngLastRow If .Cells(iRow, "A").Value <> "" Then .Cells(iRow, "A").Select If GetPortInfos(.Cells(iRow, "A").Value, .Cells(iRow, "F").Value, strData, Param.DomainName(DomainIndex), Param.User(DomainIndex), Param.Password(DomainIndex)) = 0 Then On Error Resume Next .Cells(iRow, "G").Value = strData(1) If Err.Number = 0 Then .Cells(iRow, "G").Select .Hyperlinks.Add Anchor:=Selection, Address:="http://" & strData(1), TextToDisplay:=strData(1) If Ping(.Cells(iRow, "G").Value, myECHO) = False Then .Cells(iRow, "G").Select Selection.Font.ColorIndex = 3 ' Rouge End If End If On Error GoTo 0 End If End If Next
En fait strData(1) peut exister ou non suivant le résultat de la fonction GetPortInfos, donc plutôt que me prendre la tête à tester si strData est bien un tableau et que l'indice 1 existe il me semble plus simple de tester l'erreur eventuelle renvoyée lors de l'affectation de strData(1) à la cellule.
Si cela provoque une erreur, dans la fenêtre de l'éditeur de code, barre des menus / outils / références / regarde et décoche la case si une référence est marquée "Manquante"
. Aucune référence est marquée "Manquante".
Est-ce que tu reproduit le problème sur ton PC?
Merci pour ton aide. @+
Jo
On 12 fév, 22:18, "michdenis" wrote:
À partir de ton code, c'est difficile de savoir ... mais une erreur 9 est générée à chaque fois que la référence à un objet est inadéquate
Salut,
Je ne pense pas que mon code soit en cause car il fonctionne depuis plusieurs mois sous Excel 2003. Depuis que nous avons migré quelques postes en 2007, on a constaté des comportement anormaux des macros. Quand je dis comportement anormaux, il ne s'agit d'erreur signalée par un popup, mais de résultats incohérents et SURTOUT différents du même code exécuté sur un pos te ayant Office 2003. En analysant et traçant le code, j'ai cerné la parti de code en question. C'est pour cela que j'ai posté au début de ce fil un exemple mettant en évidence ce problème.
Bon WE @+
On 12 fév, 22:18, "michdenis" <michde...@hotmail.com> wrote:
À partir de ton code, c'est difficile de savoir ...
mais une erreur 9 est générée à chaque fois
que la référence à un objet est inadéquate
Salut,
Je ne pense pas que mon code soit en cause car il fonctionne depuis
plusieurs mois sous Excel 2003.
Depuis que nous avons migré quelques postes en 2007, on a constaté des
comportement anormaux des macros. Quand je dis comportement anormaux,
il ne s'agit d'erreur signalée par un popup, mais de résultats
incohérents et SURTOUT différents du même code exécuté sur un pos te
ayant Office 2003.
En analysant et traçant le code, j'ai cerné la parti de code en
question.
C'est pour cela que j'ai posté au début de ce fil un exemple mettant
en évidence ce problème.
À partir de ton code, c'est difficile de savoir ... mais une erreur 9 est générée à chaque fois que la référence à un objet est inadéquate
Salut,
Je ne pense pas que mon code soit en cause car il fonctionne depuis plusieurs mois sous Excel 2003. Depuis que nous avons migré quelques postes en 2007, on a constaté des comportement anormaux des macros. Quand je dis comportement anormaux, il ne s'agit d'erreur signalée par un popup, mais de résultats incohérents et SURTOUT différents du même code exécuté sur un pos te ayant Office 2003. En analysant et traçant le code, j'ai cerné la parti de code en question. C'est pour cela que j'ai posté au début de ce fil un exemple mettant en évidence ce problème.