IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Suppression lignes vides selon critères


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut Suppression lignes vides selon critères
    Bonsoir

    Dans ma base j'ai une table "CMM" qui comporte 2 champs
    Un "Article" et l'autre "Qte".
    Cette table contient des enregistrements avec des valeurs pour "Article" mais vide pour "Qte"

    Avec le code ci-dessous je souhaitais pouvoir supprimer toutes les lignes qui ont la "qte" vide.
    Mais cela ne fonctionne pas.
    J'ai testé avec différentes soulutions qui elles fonctionnent.
    <> ""
    > 100


    Je suppose qu'il a une solution.
    J'avoue que même dans mes requètes standards je ne sais jamais si il faut mettre <>"" ou Est Pas Null


    D'avance merci pour votre aide

    Access 2010

    Cordialement
    StSym


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub Commande5_Click()
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("CMM", dbOpenTable)
     
    '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ' Supprime les lignes vides de la table "CMM"
     oRst.MoveFirst
     While Not oRst.EOF
     If oRst!Qte = "" Then
     oRst.Delete
     End If
     oRst.MoveNext
     Wend
     
    '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ' Ouverture de la latable
    DoCmd.OpenTable "CMM", acViewNormal, acEdit
     
    'Libération des objets
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing
     
    End Sub

  2. #2
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    bonjour,

    As-tu essayé avec la fonction isnull?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If oRst!Qte = ""  or isnull(oRst!Qte) Then
    Merci

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonsoir myrddin99,

    Trop fort, tout fonctionne !

    Non je ne pouvais pas essayer la fonction isnull, car je ne la connaissais pas.

    Merci pour la rapidité de ta réponse.
    Désolé de faire travailler les bénévoles le 1er mai !

    Encore merci
    Cordialement
    StSym

  4. #4
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    Rebonjour,

    Juste pour ajouter un élément, je crois qu'il aurait été plus simple de passer par un SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.runSQL "DELETE * FROM Ccm WHERE [Qté]="" or [Qté] is null"
    Au lieu de passer le recordset un enregistrement à la fois, il pourrait être efficace de le faire en une requête

    Merci

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonjour myrddin99

    J'ai testé ta proposition mais j'ai un message d'erreur "3075".
    "Erreur de syntaxe dans la chaine d'expression [Qté]=" or [Qté] is null"

    Je pense que cela provient du caractere ".

    Par contre si j'écris simplement

    docmd.runSQL "DELETE * FROM Ccm WHERE [Qté] is null"

    tout fonctionne bien

    Merci encore
    StSym

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression lignes identiques selon critères
    Par stsym dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 08/06/2011, 05h37
  2. Suppression ligne vide
    Par sebys dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 04/01/2008, 14h29
  3. Probleme suppression ligne vide publipostage
    Par thierry440 dans le forum Word
    Réponses: 3
    Dernier message: 17/11/2007, 20h29
  4. Suppression ligne vide d'un range
    Par coco21 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/08/2007, 14h02
  5. [VBA-E] Probleme lenteur suppression ligne vide sur 100 lignes
    Par sebi78 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 14/05/2007, 20h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo