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

IHM Discussion :

Créer une requête suppression avec condition


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut Créer une requête suppression avec condition
    Bonjour,

    Je souhaiterais trouver le code SQL lié à une requête suppression d'enregistrements sous condition.

    En clair, je souhaite supprimer toutes les lignes d'une table qui sont placées après une donnée (ACTION2) qui se trouve dans le champ F1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE T_ACTION
    FROM T_ACTION
    Where ...
    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    pas très clair la demande, peut-être qu'une capture d'écran des données aiderait à y voir mieux ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut
    Bonjour tee-Grandbois,

    Je te transmets le fichier Excel que j'importe dans ma base Access en liaison. Le but est de créer une requête qui me supprime tous les données après "ACTION2" (A partir de la ligne 19 du fichier). Je souhaite garder uniquement le premier tableau à partir de la ligne 5. Les données sont variables donc je peux avoir 10 lignes à conserver comme +++ mais ce sera toujours après "ACTION2".
    Je ne sais pas si c'est possible sur Access mais avec ton expérience de retraité (Actif) je me dis que rien n'est impossible..
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    ce n'est pas une table mais un classeur attaché, je ne suis pas persuadé que l'on puisse supprimer des lignes via une requête.
    Il faut peut être voir le problème différemment : que fais-tu des lignes que tu veux garder ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut
    Oui effectivement c'est un classeur attaché mais je crée une table avec une requête et ensuite je l'exporte dans un classeur Excel déjà existant.
    C'est pour ça que j'essaie d'insérer dans la requête SQL, le code pour supprimer les lignes qui ne m'intéresse pas pour pouvoir l'exporter...
    As tu une autre solution ?

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Oui effectivement c'est un classeur attaché mais je crée une table avec une requête et ensuite je l'exporte dans un classeur Excel déjà existant.
    C'est pour ça que j'essaie d'insérer dans la requête SQL, le code pour supprimer les lignes qui ne m'intéresse pas pour pouvoir l'exporter.
    peux-tu nous la refaire dans un ordre qui permettrait de comprendre ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut
    Il faut peut être voir le problème différemment : que fais-tu des lignes que tu veux garder ?
    Je souhaite les exporter dans un classeur Excel déjà créé : BDD_Courriers.xlsm
    Sur la feuille : Source_stocksFlux

    Mais comme tu peux le constater, les données ne sont pas exploitables en l'état donc je souhaiterai faire le ménage sur ce classeur attaché à ma base Access pour garder uniquement les données qui se trouvent avant "ACTION2" et à partir de la ligne 5.

    En espérant que tu arrives à me comprendre..
    Merci tee_grandbois

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    existe t-il une raison particulière d'attacher le classeur ?
    Car il est possible d'exporter directement de classeur à classeur:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Sub fExportXlsToXls()
    Dim xlApp As New Excel.Application
    Dim xlWbk1 As Excel.Workbook, xlWbk2 As Excel.Workbook
    Dim xlWsh1 As Excel.Worksheet
    Dim xlWsh2 As Excel.Worksheet
    Dim strFicSource As String
    Dim strFicDestin As String
    Dim L As Long
    Dim lgDerlig1 As Long
    Dim lgDerLig2 As Long
     
    'fichiers du traitement
    strFicSource = "C:\StocksTest.xlsx"
    strFicDestin = "C:\BDD_Courriers.xlsm"
    Set xlWbk1 = xlApp.Workbooks.Open(strFicSource)
    Set xlWbk2 = xlApp.Workbooks.Open(strFicDestin)
     
    'feuilles du traitement
    Set xlWsh1 = xlWbk1.Worksheets("TEST")
    Set xlWsh2 = xlWbk2.Worksheets("Source_stocksFlux")
     
    'récupération du dernier enregistrement de chaque classeur
    lgDerlig1 = xlWsh1.UsedRange.Rows.Count
    lgDerLig2 = xlWsh2.UsedRange.Rows.Count
     
    'xlApp.Visible = True
     
    With xlWsh1
        'lecture du classeur source à parir de la ligne 5
        For L = 5 To lgDerlig1
            ' fin du traitement si ACTON2 est trouvé en cellule A
            If .Cells(L, 1).Value = "ACTION2" Then
                Exit For
            Else
            'copie des lignes de la feuille 1 si cellule A n'est pas vide
                If .Cells(L, 1).Value <> "" Then
                    .Rows(L).Copy xlWsh2.Rows(lgDerLig2)
                    lgDerLig2 = lgDerLig2 + 1
                End If
            End If
        Next L
    End With
     
    xlWbk1.Close
    'sauvegarde du classeur de destination
    xlWbk2.Close True
    xlApp.Quit
     
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    C'est parfait comme traitement mais j'aimerais pouvoir le lancer directement de mon fichier de destination : BDD_Courriers.xlsm
    J'ai intégré ton code sur ce classeur via un Btn de commande, or comme ce classeur est ouvert pour d'autres traitements, il me demande d'enregistrer une copie et je souhaiterai qu'il enregistre directement les données sur BDD_Courriers.xlsm.
    Est ce que c'est possible ?
    Merci tee_grandbois.

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut
    J'ai oublié de te préciser et je ne sais pas si ça a son importance, le classeur BDD_Courriers.xlsm s'ouvre avec un mot de passe : "pat01"

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Citation Envoyé par ANANA49 Voir le message
    Bonjour,

    C'est parfait comme traitement mais j'aimerais pouvoir le lancer directement de mon fichier de destination : BDD_Courriers.xlsm
    J'ai intégré ton code sur ce classeur via un Btn de commande, or comme ce classeur est ouvert pour d'autres traitements, il me demande d'enregistrer une copie et je souhaiterai qu'il enregistre directement les données sur BDD_Courriers.xlsm.
    Est ce que c'est possible ?
    Merci tee_grandbois.
    donc tu ne passe plus par Access ... cela devient du code 100% Excel. Est-ce que le classeur BDD_Courriers.xlsm est ouvert en mode partagé ?
    Et pourquoi ne pas le lancer à partir d'un 3ème classeur dédié au traitement ?
    Citation Envoyé par ANANA49
    J'ai oublié de te préciser et je ne sais pas si ça a son importance, le classeur BDD_Courriers.xlsm s'ouvre avec un mot de passe : "pat01"
    je ne crois pas que cela a une importance car, en général, le mot de passe protège la structure, sinon modifie l'ouverture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlWbk2 = xlApp.Workbooks.Open(strFicDestin, Password:="pat01")
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut
    Merci pour ta réponse.

    Oui je souhaitais le lancer d'Access via un bouton de contrôle sur un formulaire mais j'ai eu un message d'erreur : Type défini par l'utilisateur non défini

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim xlApp As New Excel.Application
    Dim xlWbk1 As Excel.Workbook, xlWbk2 As Excel.Workbook
    Dim xlWsh1 As Excel.Worksheet
    Dim xlWsh2 As Excel.Worksheet
    Je travaille sur la version Excel 2016...
    J'aimerais vraiment le lancer d'Access !

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Je travaille sur la version Excel 2016...
    J'aimerais vraiment le lancer d'Access !
    d'accord, mais dans ce cas, pourquoi vouloir aussi le lancer depuis Excel ? :
    C'est parfait comme traitement mais j'aimerais pouvoir le lancer directement de mon fichier de destination
    Essaie ce code qui est en Late Binding (création des objets Excel, donc pas besoin d'ajouter de référence):
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Function fExportXlsToXls()
    Dim xlApp As Object
    Dim xlWbk1 As Object, xlWbk2 As Object
    Dim xlWsh1 As Object, xlWsh2 As Object
    Dim strFicSource As String
    Dim strFicDestin As String
    Dim L As Long
    Dim lgDerlig1 As Long
    Dim lgDerLig2 As Long
    '
    Set xlApp = Excel.Application
    'fichiers du traitement
    strFicSource = "D:\StocksTest.xlsx"
    strFicDestin = "D:\BDD_Courriers.xlsm"
     
    Set xlWbk1 = xlApp.Workbooks.Open(strFicSource)
    Set xlWbk2 = xlApp.Workbooks.Open(strFicDestin, Password:="pat01")
     
    'feuilles du traitement
    Set xlWsh1 = xlWbk1.Worksheets("TEST")
    Set xlWsh2 = xlWbk2.Worksheets("Source_stocksFlux")
     
    'dernier enregistrements de chaque classeur
    lgDerlig1 = xlWsh1.UsedRange.Rows.Count
    lgDerLig2 = xlWsh2.UsedRange.Rows.Count
     
    xlApp.Visible = True
     
    With xlWsh1     'lecture du classeur source à partir de la ligne 5
        For L = 5 To lgDerlig1
            ' fin du traitement si ACTON2 est trouvé en cellule A
            If .Cells(L, 1).Value = "ACTION2" Then
                Exit For
            Else
            'copie des lignes de la feuille 1 si cellule A n'est pas vide
                If .Cells(L, 1).Value <> "" Then
                    .Rows(L).Copy xlWsh2.Rows(lgDerLig2)
                    lgDerLig2 = lgDerLig2 + 1
                End If
            End If
        Next L
    End With
     
    xlWbk1.Close
    'sauvegarde du classeur de destination
    xlWbk2.Close True
    xlApp.Quit
     
    End Function
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  14. #14
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut
    Bonjour tee_grandbois,

    J'ai intégré ton code sur mon formulaire Access via un bouton de contrôle mais il m'indique un message d'erreur : Erreur '424' Objet requis

    Il bloque sur :
    Set xlApp = Excel.Application
    Je ne comprends pas..
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Private Sub fExportXlsToXls_Click()
    Dim xlApp As Object
    Dim xlWbk1 As Object, xlWbk2 As Object
    Dim xlWsh1 As Object, xlWsh2 As Object
    Dim strFicSource As String
    Dim strFicDestin As String
    Dim L As Long
    Dim lgDerlig1 As Long
    Dim lgDerLig2 As Long
    '
    Set xlApp = Excel.Application
    'fichiers du traitement
    strFicSource = "D:\StocksTest.xlsx"
    strFicDestin = "D:\BDD_Courriers.xlsm"
     
    Set xlWbk1 = xlApp.Workbooks.Open(strFicSource)
    Set xlWbk2 = xlApp.Workbooks.Open(strFicDestin, Password:="pat01")
     
    'feuilles du traitement
    Set xlWsh1 = xlWbk1.Worksheets("TEST")
    Set xlWsh2 = xlWbk2.Worksheets("Source_stocksFlux")
     
    'dernier enregistrements de chaque classeur
    lgDerlig1 = xlWsh1.UsedRange.Rows.Count
    lgDerLig2 = xlWsh2.UsedRange.Rows.Count
     
    xlApp.Visible = True
     
    With xlWsh1     'lecture du classeur source à partir de la ligne 5
        For L = 5 To lgDerlig1
            ' fin du traitement si ACTON2 est trouvé en cellule A
            If .Cells(L, 1).Value = "ACTION2" Then
                Exit For
            Else
            'copie des lignes de la feuille 1 si cellule A n'est pas vide
                If .Cells(L, 1).Value <> "" Then
                    .Rows(L).Copy xlWsh2.Rows(lgDerLig2)
                    lgDerLig2 = lgDerLig2 + 1
                End If
            End If
        Next L
    End With
     
    xlWbk1.Close
    'sauvegarde du classeur de destination
    xlWbk2.Close True
    xlApp.Quit
     
    End Sub

  15. #15
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    désolé c'est une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlApp = CreateObject("Excel.application")
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  16. #16
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut
    Un grand merci à toi, tee_grandbois !

    Tout fonctionne.. A bientôt

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

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