Probleme execution

  • Auteur de la discussion darkspoilt
  • Date de début

darkspoilt

Expert
Bonjour,
J'ia un probleme d'exécution ma méthode Cells échoue une fois sur deux précisément donc je voudrais savoir si c'est du a une mérmoire a vider ou autre??
voila mon code

[cpp]Public Function Ligne(File As String) As Long


Dim AppExcel As Excel.Application
Dim wbFile As Excel.Workbook
Dim i As Long

'Initialisation
Ligne = -1
i = 1

'Ouverture d'excel
Set AppExcel = CreateObject("Excel.Application")
If Not AppExcel Is Nothing Then
'Ouverture du classeur
Set wbFile = AppExcel.Workbooks.Open(File, False, True)
If Not wbFile Is Nothing Then
i = 1
Do While Cells(i, 1).Value <> "TOTAL" Or Cells(i, 1).Value <> "Total"
i = i + 1
Loop
Ligne = i
wbFile.Close
Set wbFile = Nothing
End If
AppExcel.Application.Quit
Set AppExcel = Nothing

End If
End Function


[/cpp]
 

Freeman23

Expert
C'est quoi le message d'erreur ?

Tu peux remplacer ton test par :
Sinon je vois pas d'erreur comme ca, il y a juste que tu précises pas l'onglet actif c'est peut etre ca, mais pourquoi une fois sur 2...

Code:
wbfile.sheets("toto").activate
With wbfile.sheets("toto")
   i=1
   Do while ucase(Cells(i,1)) = "TOTAL"
      i = i +1
   Loop
End with
Perso, j'utilise Range en général qui necessite que la feuille soit active pour pouvoir être appelé, c'est peut etre pareil pour Cells...
 

darkspoilt

Expert
Il me met la methode Cells de l'objet '_Global' a échoué sachant que je n'ai aps de table ou de requete s'appelant ainsi
Et l'exécution s'arrete au do while c'est une fonction que j'utilise dans un programme prinicpal
Et cela vraiment une fois sur deux.
Et meme avec des ucase cela fonctionne pas

Ce serait pas une erreur mémoire on a pas un moyen de vider le cache en VBA??
 

Freeman23

Expert
Le ucase c'est juste pour être plus judicieux car si une fois tu as écrit "Total" dans ta feuille ta fonction ne marchera plus.

Sinon à part le activate de l'onglet je vois pas trop pourquoi et j'ai pas le temps de le tester aujourd'hui donc faudra patienter jusqu'à lundi ou trouver tout seul :p
 

zeb

Modérateur
La bonne syntaxe est
Code:
i=1
Do while ucase(wbfile.sheets("toto" ).Cells(i,1)) = "TOTAL"
  i = i +1
...

Si tu es un gros fainéant (Vertu chez les programmeurs :whistle: ), tu peux utiliser With qui est utilise pour ne pas avoir à l'écrire plusieurs fois (donc ne se justifie pas ici) :

Code:
With wbfile.sheets("toto" )
   i=1
   Do while ucase(.Cells(i,1)) = "TOTAL"
      i = i +1
   ...
End Width
(Ligne 5, le point devant Cells)
 

darkspoilt

Expert
Merci Zeb grace a ta syntaxe ca a l'air de fonctionner tout le temps après quatre test ce qui est une grosse amélioration
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 054
Membres
1 586 393
Dernier membre
mathhh28
Partager cette page
Haut