Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Résultat de requête Null

  • Initiateur de la discussion Initiateur de la discussion g6k
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

g6k

Guest
Bonjour à tous,
J'aimerais obtenir de l'aide : J'ai une macro qui fait appel à une requete access paramétrée. Mon probleme c'est que le résultat de la requete peut être Null.
Je voudrais insérer dans ma macro une instruction qui me permettrait de rebondir sur une telle situation, mais je ne sais pas comment on "traduit" NULL en VBA (sur Excel). Mon exemple sera plus explicite :


Dim bd As DAO.Database
Dim rs As Recordset

Set bd = OpenDatabase("R:\DOP\ACH\INT\Reporting\Bases ACCESS\Copie_ACCESS-MAXPROD-ACHATS.mdb")
Set q = bd.QueryDefs("JD - CA par fournisseur (hors taxes)") 'nom de ma requête

n$ = Cells(i, 2)

q.Parameters("COMPANY ?") = n$
q.Parameters("Date début période ?") = d2
q.Parameters("Date fin période ?") = d1

Set rs = q.OpenRecordset

If résultat de la requete Null Then
Cells(i, 7) = "COMPANY non valide"

Else
Cells(i, 7).Value = rs.Fields("CA_hors_taxes")
Cells(i, 8) = Cells(i, 7) / Cells(i, 6)
End If


Si quelqu'un sait par quoi je dois remplacer ce qui est en rouge...??
Merci d'avance
g6k
 
Re : Résultat de requête Null

Bonjour g6k

pas sur d'avoir tout compris, peut être ainsi, à tout hasard :

Code:
If rs Is Nothing Then
Cells(i, 7) = "COMPANY non valide"
Else
Cells(i, 7).Value = rs.Fields("CA_hors_taxes")
Cells(i, 8) = Cells(i, 7) / Cells(i, 6)
End If

bon après midi
@+
 
Re : Résultat de requête Null


Salut pierrot,
Tu as tout à fait compris ce que je voulais, mais malheureusement "rs is nothing" ne fonctionne pas : cela ne crée pas d'erreur, cela ne bloque pas la macro mais avec cette ligne, même si le champ est null, la macro passe à else!
Je ne vois pas comment faire, j'ai essayé plusieurs choses dans le même genre :
if rs.fields("CA_hors_taxes") is nothing (ou is null) then
mais cela ne fonctionne pas.
Je ne sais pas comment on traduit "null" en vba!

g6k
 
Re : Résultat de requête Null

Bonjour à tous,

en effet, comme l'a proposé Pierrot, j'essaierais :

If isNull(rs.Fields("CA_hors_taxes")) Then

mais je ne suis pas sûr...

Bonjour tototiti,

If isNull(rs.Fields("CA_hors_taxes")) Then ne fonctionne pas non plus, la macro passe directement à else.
Peut être que c'est moi qui est mal traduit ce que je voyais. Peut être que l'on appelle pas ça null!
Je joins une impression sur écran du résultat de la requete dans ce cas là.
Dites moi ce que vous en pensez.
Merci beaucoup
g6k
 

Pièces jointes

Re : Résultat de requête Null

Re,

essaye peut-être :

if rs.recordcount = 0 then

Tototiti tu es génial!!!! ça fonctionne!
Merci merci merci merci

Merci aussi à pierrot de t'être penché sur mon problème!!
Une dernière petite question pour la route (plus facile)
Je voudrais que "COMPANY non valide" apparaissent en rouge??

Merci encore
g6k
vive excel downloads!
 
Re : Résultat de requête Null

Re,

à tester :

Code:
If rs.recordcount = 0 Then
Cells(i, 7).Font.ColorIndex = 3
Cells(i, 7) = "COMPANY non valide"
Else
Cells(i, 7).Font.ColorIndex = 1
Cells(i, 7).Value = rs.Fields("CA_hors_taxes")
Cells(i, 8) = Cells(i, 7) / Cells(i, 6)
End If
 
Re : Résultat de requête Null


Merci beaucoup!

Je crois que je ne vais jamais m'en sortir avec cette macro.
J'ai un autre souci maintenant!

Comment je fais pour configurer en vba le format d'une colonne?
Je veux que dans ma colonne D mes résultats s'affichent en format date, sans que j'ai besoin de définir mes variables en tant que tel??! Les colonnes F et G en monétaire et la colonne H en pourcentage.
J'avais fais ça pour la colonne C qui doit être une chaine de caractère b$ = Str(Cells(i, 3)).
Y'a t-il une instruction similaire pour le reste??
Merci

g6k
 
Re : Résultat de requête Null

Re,

Non, une variable n'a pas de mise en forme, (sauf peut-être les variables Objet...)
une variable a un type (string, integer, long...) et une valeur.
Il faut que tu mettes en forme les cellules qui vont accueillir tes résultats, pas la variable.
 
Re : Résultat de requête Null


Dacord
If c Is Nothing Then
Cells(i, 6).Font.ColorIndex = 32
ca = "Aucune publication"
d1 = ""
d2 = ""

et après le end if .. j'ai
Cells(i, 6) = ca

Pourtant cela ne fonctionne pas
Merci
g6k
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…