VBA Probleme de boucle

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

darkspoilt

Expert
Bonjour,
j'ai une erreur dans ma boucle cette fonction a été créer pour trouver la ligne d'une donnée dans un tableau excel et il me met une erreur dans mon Do while
Est ce bonne syntaxe?
Je remercie d'avance ceux ki verront l'erreur

[cpp]
Public Function Ligne() As Long

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

Set AppExcel = CreateObject("Excel.Application") ' Ouverture d'excel
If Not AppExcel Is Nothing Then
Set wbFile = AppExcel.Workbooks.Open("Test\Essai.xls", False, True) 'Ouverture du classeur
If Not wbFile Is Nothing Then
i = 1
Do While Cells(i, 1).Text <> "TOTAL"
i = i + 1
Loop

wbFile.Close
AppExcel.Application.Quit
Set AppExcel = Nothing
End If

End If
Ligne = i
End Function
[/cpp]
 

zeb

Modérateur
Code:
Option Explicit

Public Function Ligne(ByVal filename As String) As Long
    'Declaration des variables
    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(filename, False, True)
        If Not wbFile Is Nothing Then
            ' On recherche TOTAL
            Do While wbFile.Sheets(1).Cells(i, 1).Text <> "TOTAL"
                i = i + 1
            Loop
            ' Tadaaaaa : Le Résultat !!!!!
            Ligne = i
            ' Mr. propre
            wbFile.Close
            Set wbFile = Nothing
        End If
        ' Mr. propre
        AppExcel.Application.Quit
        Set AppExcel = Nothing
    End If
End Function

Pas d'erreur de syntaxe dans ton code.
Des erreurs mineures :
■ Où est l'initialisation de Ligne ? Si TOTAL n'est pas trouvé, la fonction renvoie une valeur non définie. Je corrige ça ligne 10.
■ Tu ne précises pas quel classeur et quelle feuille considérer. Si par ailleurs Excel est ouvert, ça peut jouer. Corrigé ligne 20.
■ On ferme proprement Excel, même si le fichier n'a pas pu être ouvert. Pourtant déjà signalé à l'auteur de ce code :o

(Perso, je préfère les commentaires à la même hauteur que le code. C'est une affaire de goût. Quand tu auras fait des audits de code sur des milliers de lignes que tu n'auras pas écrites toi-même, tu exigeras cette mise en forme ;) )

Une erreur majeure :
■ Tu ne précises pas la ligne et le message de l'erreur dont tu parles. Faut-il deviner ? [:zeb]
 

darkspoilt

Expert
J'ai écrs que c'était dans mon DO while et l'arreur venait
et je devais mettre
[cpp]Do While wbFile.Sheets(1).Cells(i, 1).Value <> "TOTAL"[/cpp]
au lieu de
[cpp]Do While wbFile.Sheets(1).Cells(i, 1).Text <> "TOTAL"[/cpp]
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 846
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut