[Catégorie modifiée .Net --> VBA] Problème VBA sur EXCEL 2003 ( probleme d'execu

Résolu
Signaler
Messages postés
4
Date d'inscription
mercredi 26 mai 2010
Statut
Membre
Dernière intervention
9 juin 2010
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour à tous.Actuellement je fais un petit programme sous excel 2003 permettant à un utilisateur d'afficher une référence et une quantité(données stockées dans un fichier csv) en fonction de 2 variables sur la feuille excel.

Le problème est que lorsque j'exécute mon bouton j'ai un bug et le debeugeur se met sur la ligne "Record.MoveFirst". Il me met aussi ce message :

"
Erreur d'éxécution '3021' :

BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé.L'opération demandée nécessite un enregistrement actuel.
"



Voici mon code :

Dim mavar As String
Dim mavar1 As Integer
Dim sql As Variant
Dim Connex As ADODB.Connection
Dim Record As ADODB.Recordset
Set Connex = New ADODB.Connection
Set Record = New ADODB.Recordset

'les 2 variables
mavar = Range("A4").Value
mavar1 = Range("C4").Value



'si une des cases est vide ou les 2
If (IsEmpty(mavar) And IsEmpty(mavar1)) Or (IsEmpty(mavar)) Or (IsEmpty(mavar1)) Then

'Affichage du message ci dessous
MsgBox "Il faut entrer une référence ET un numéro"
Else
'Connection base

Repertnom = "C:\Users\Essais"
Connex.ConnectionString = "ODBC;DBQ=" & Repertnom & ";" & _
"DefaultDir=C:\;" & _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"DriverId=27;Extensions=txt,csv,tab,asc;FIL=text;MaxBufferS"

Connex.Open

'Lancement requete sql

sel = " SELECT NO_ORDRE,NO_REFDET,NO_QTE "
fro = " FROM f.csv "
whe " WHERE AR_REF '" & mavar & "' And NO_OPERATION = " & mavar1 & ""
ord = " ORDER BY NO_QTE "
Record.Open sel & fro & whe & ord, Connex

'Chargement sur la feuille
Set f = Sheets("Feuil2")
'Commence sur la ligne 5
i = 5
Record.MoveFirst
Do While Not Record.EOF
'colonne 4 /ligne 5
f.Cells(i, 5) = Record("NO_QTE")
'colonne 5 /ligne 5
f.Cells(i, 6) = Record("NO_REFDET")
'colonne 6 /ligne 5
f.Cells(i, 7) = Record("NO_ORDRE")
i = i + 1
Record.MoveNext
Loop
Record.Close
'fin
Connex.Close
End If





Le truc bizarre c'est que lorsque je modifie un bout de code,c'est à dire j'enleve la variable whe , mon bouton marche très bien



(Modification du code apporté :
sel = " SELECT NO_ORDRE,NO_REFDET,NO_QTE "
fro = " FROM f.csv "
ord = " ORDER BY NO_QTE "
Record.Open sel & fro & ord, Connex
)


Je n'ai pas réussi à solutioner le problème et étant débutant je ne pense pas que ce problème soit très dur à résoudre mais je ne trouve pas de solutions

Merci d'avance pour les réponses
amicalement Bonne journée

5 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
piste: C'est pas dans le cas ou la requête ne retournerait rien?

essaie de récupérer la requête avant de l'exécuter histoire de la tester manuellement dans un querybrowser

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut

Oui, avant de donner des ordres au RecordSet, il faut s'assurer qu'il y a quelque chose dedans :
    Record.Open sel & fro & whe & ord, Connex
    If Record.Count > 0 Then
        'Chargement sur la feuille
        Set f = Sheets("Feuil2") 
        ....
    End If

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Pense au bouton réponse acceptée sur la ou les réponses qui t'ont aidé.


@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
4
Date d'inscription
mercredi 26 mai 2010
Statut
Membre
Dernière intervention
9 juin 2010

ok merci je vais tester çà demain et je vous dis
Messages postés
4
Date d'inscription
mercredi 26 mai 2010
Statut
Membre
Dernière intervention
9 juin 2010

En effet ma requête ne renvoyait rien car il n'avait rien à renvoyer c'est moi qui avait pas vu cette erreur de débutant

Merci pour tout.

Bonne journée et à la prochaine !