Plantage avec goto

Bonjour,

j'utilise excel pour extraire des données d'un programme telecom et les coller ensuite dans excel puis : traitement, cela fonctionne bien environ 1 fois sur 5, aléatoirement et même avec les mêmes données, j'ai des érreurs.

J'ai entendu dire que goto n'était pas très fiable, savez vous dans quel cas et surtout par quel commande fiable je pourrais le remplacer.

Merci

Edit Dan : "Supprimé résolu" -> voir message de Claude si tu nous lis.

Bonsoir,

Goto est pour envoyer à une ligne de procédure,

faudrait voir la macro complète pour juger de son utilisation.

Amicalement

Claude

Bonjour,

Voici une partie du code ou se trouve les goto

varNumLigne = 2

varPABXold = Range("F" & varNumLigne)

varPABX = Range("F" & varNumLigne)

varLigne = Range("D" & varNumLigne)

GoTo Debut

' Debut boucle

boucle:

varNumLigne = varNumLigne + 1

varPABX = Range("F" & varNumLigne)

varLigne = Range("D" & varNumLigne)

If varPABX = varPABXold Then GoTo PABXIdem

If varPABX = "" Then GoTo Fin Else GoTo PABXChoix

Debut:

Application.Wait (Now + TimeValue("0:00:01"))

Shell "C:\Program Files\PABX\ComTel.exe" ', vbNormalFocus

' Connection sur un PABX au pif pour accès au log

Application.Wait (Now + TimeValue("0:00:01"))

SendKeys "%", False

SendKeys "c", False

SendKeys "f", True

SendKeys "1", False

Application.Wait (Now + TimeValue("0:00:01"))

' Enregistrement du fichier LOG

SendKeys "%", False

SendKeys "f", False

SendKeys "l", False

SendKeys "n", True

SendKeys "C:\Program Files\PABX\mvt_de_test", True

SendKeys Chr(13)

PABXChoix:

Application.Wait (Now + TimeValue("0:00:02"))

SendKeys "%", False

SendKeys "c", False

SendKeys "f", True

Select Case varPABX 'Choix du PABX

Case "AVE1"

SendKeys "0", False

Case "AVE2"

SendKeys "1", False

Case "CD16"

SendKeys "2", False

Case "CD18"

SendKeys "3", False

Case "CD22"

SendKeys "4", False

Case "CE01"

SendKeys "5", False

Case "CE02"

SendKeys "6", False

Case "CE03"

SendKeys "7", False

Case "CE04"

SendKeys "8", False

Case "CRYS"

SendKeys "9", False

Case "IDF1"

SendKeys "A", False

Case "IDF2"

SendKeys "B", False

Case "LOG1"

SendKeys "C", False

Case "LOG2"

SendKeys "D", False

Case Else

Range("L" & varNumLigne) = "PABX non-reconnu : " & varPABX

End Select

Application.Wait (Now + TimeValue("0:00:03"))

PABXIdem:

Application.Wait (Now + TimeValue("0:00:01"))

SendKeys "dis-sdsu:all,,stno,per3," & varLigne & ";" & Chr(13)

Application.Wait (Now + TimeValue("0:00:03"))

varPABXold = varPABX

GoTo boucle

Fin:

' Fermeture ComWin

Application.Wait (Now + TimeValue("0:00:01"))

SendKeys "%", False

SendKeys "f", False

SendKeys "e", True

Application.Wait (Now + TimeValue("0:00:01"))

SendKeys "%", False

SendKeys "f", False

SendKeys "e", True

Application.Wait (Now + TimeValue("0:00:01"))

' Ouverture du fichier pour récupérer les données

Dim ReturnValue

ReturnValue = Shell("c:\windows\notepad.exe C:\Program Files\PABX\mvt_de_test.PRO", 1)

AppActivate ReturnValue

SendKeys "^(a)", False

SendKeys "^(c)", True

' Fermeture wordpad

Application.Wait (Now + TimeValue("0:00:01"))

SendKeys "%", False

SendKeys "f", False

SendKeys "q", True

' Collage données

Sheets("Tests telecom").Range("Q1").Select

ActiveSheet.Paste

' Vidage presse papier

Application.CutCopyMode = False

Bonjour,

Les GOTO fonctionnent mais la lisibilité du code est plus difficile, pour toi surtout.

Pour faire plus simple et plus lisible, divise ta macro en plusieurs parties.

Exemple : Lorsque tu mets --> GoTo Debut

Mets plutôt CALL DEBUT, puis crée une SUB DEBUT() avec les instructions relatives à cette macro.

Amicalement

bonjour,

Merci pour la réponse

Pour le résolu, maintenant c'est ici

a resolu3
Rechercher des sujets similaires à "plantage goto"