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

Access Discussion :

Suppression de dossier de plusieurs éléments cochés depuis une table [AC-2016]


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut Suppression de dossier de plusieurs éléments cochés depuis une table
    Bonjour à tous
    Je vous expose mon problème :
    J'ai une table des articles (donc avec un N° d'article, et un coche de sélection)
    Quand je crée un nouvel article ex: 9550200
    je fais créer en VBA un dossier portant le même nom sur mon disque dur

    ensuite si je supprime l'article :
    je coche l'article à supprimer cela m'efface de la table et m'efface le dossier.

    Maintenant ce que je souhaiterais c'est pouvoir sélectionner plusieurs articles en même temps et que ça m'efface tous les dossiers des enregistrements sélectionnés
    Côté table article j'arrive sans problème à effacer les enregistrements sélectionnés mais je ne connais pas la solution pour boucler sur la suppression des dossiers

    ex: si je coche l'article 9550200 et l'article 9550201 , j'aimerai que ça me supprimer le dossier 9550200 et le dossier 9550201

    pourriez vous m'aider svp?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    pour l'instant j'utilise ce code pour la suppression d'un article
    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
     Dim strMsg1 As String
                strMsg1 = "L'article n'est plus utilisé dans un Sous-ensemble." & vbCrLf & "Voulez vous supprimer définitivement cet enregistrement ?" 'On met le message "Voulez-vous.. " dans une variable appelée strMsg
     
                If MsgBox(strMsg1, vbQuestion + vbYesNo, "Confirmation:") = vbYes Then 'On crée une fenêtre qui demande oui ou non à la question posée. Si la réponse au message strMsg est oui alors
     
     
                Dim fso As FileSystemObject
                Set fso = New FileSystemObject
     
                Dim Nomrépertoire As String
                If Me.N°_indice = "A" Then
                Nomrépertoire = "\\SERVEUR\Access\Données plans\" & Me.N°_article
                Else
                Nomrépertoire = "\\SERVEUR\Access\Données plans\" & Me.N°_article_indice_SS_ensemble
                End If
     
                fso.DeleteFolder Nomrépertoire, True
     
                VarCodearticle = Left(VarCodearticle, 7)
     
                DoCmd.RunSQL "DELETE Tbl_Articles_Ind.* From Tbl_Articles_Ind WHERE (((Tbl_Articles_Ind.N°_article)=Codearticle()));"

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Si vous souhaitez sélectionner plusieurs articles à supprimer, alors il faudrait commencer par créer une zone de liste (nommée par exemple ListeArticles) avec l'option sélection multiple.
    Ensuite vous sélectionnez vos articles dans la liste et avec un code de ce genre vous les supprimez :

    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
         Dim fso As FileSystemObject
         Dim Nomrépertoire As String
     
         Set fso = New FileSystemObject
     
         For Each NumArticle In Me.ListeArticles.ItemsSelected     ' on parcourt les articles sélectionnés dans la liste ListeArticles
     
              Nomrépertoire = "\\SERVEUR\Access\Données plans\" & NumArticle ' nom complet du répertoire sur le serveur
     
              fso.DeleteFolder Nomrépertoire, True ' Suppression du dossier
     
              DoCmd.RunSQL "DELETE Tbl_Articles_Ind.* From Tbl_Articles_Ind WHERE Tbl_Articles_Ind.N°_article=" & NumArticle ' Suppression de l'aricle dans la base
     
         Next NumArticle
     
         Set fso = Nothing
    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Bonjour
    Merci pour votre aide
    peut on remplacer la zone de liste à choix multiple par une requête de selection?

    Je suis plus à l'aise avec cette démarche j'arrive à les regrouper dans une requête avec comme critère coche_selection_article = true ?

    Quelque chose comme ci dessous? (attention j'ai essayé d'écrire quelque chose et à mon avis le code est plein d'erreur si on peut m'aider à ce qu'il fonctionne)
    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
             Dim fso As FileSystemObject
             Dim Nomrépertoire As String
     
             Dim oRst As DAO.Recordset
             Dim oFld As DAO.Field
     
             Set oRst = CurrentDb.OpenRecordset("R_Selection_articles_suppression")
     
            For Each oFld In oRst.Fields
     
            Nomrépertoire = "\\SERVEUR\Access\Données plans\" & NumArticle ' nom complet du répertoire sur le serveur
     
            fso.DeleteFolder Nomrépertoire, True ' Suppression du dossier
     
            DoCmd.RunSQL "DELETE Tbl_Articles_SS_ensemble.* From Tbl_Articles_SS_ensemble WHERE (((Tbl_Articles_SS_ensemble.Coche_selection_article_ss_ensemble)=True));" ' Suppression de l'aricle dans la base
     
     
     
            Next oFld
     
     
            Next oFld
     
            oRst.MoveNext
            Wend
     
             Set fso = Nothing

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Désolé je n'avait pas lu votre titre,

    Dans ce cas il faut ouvrir un recordset et le parcourir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Do until rst.eof
    ... ' le traitement
     
    Numarticle= rst![N°_Article]
     
    Nomrépertoire = "\\SERVEUR\Access\Données plans\" & NumArticle ' nom complet du répertoire sur le serveur
     
            fso.DeleteFolder Nomrépertoire, True ' Suppression du dossier
     
    Rst.movenext
    Loop
     
    Docmd.runsql...
    Rst serait basé sur votre requête sélection.

    Pour faire référence à un champ de cette requete :

    Idarticle= rst![N°_Article]
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Merci pour votre réponse, ok je vais essayé

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Je suis sur mon telephone, j'ai essayé de vous faire un résumé dans mon message precedent.

    En gros il faut exécuter votre requête suppression à la fin à l'exterieur de la boucle.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    OK voici ce que j'ai essayé de faire dans mon code j'essaye de mettre le plus de renseignement possible pour une meilleure compréhension
    déjà je rappelle mon objectif :
    J'ai 3 tables :
    Tab_Articles_Principale (1) -> relation 1 à plusieurs avec -> Tab_Articles_Indice (2) -> relation 1 à plusieurs avec -> Tab_Articles_SS_ensemble (3)
    (ex : 9005220) (ex: 9005220A,9005221A) (ex: 9005221A)

    et donc j'ai des dossiers sur Serveur nommés : 9005220A , 9005221A


    Le but de mon code est de pouvoir faire ceci :

    - Quand coche dans Tab_articles_ss_ensemble (3) :

    - Suppression ligne dans Tab_articles_ss_ensemble (3)

    - Compte dans cette table si l'enregistrement supprimé existe encore (oui car 9005221A peut être utilisé dans plusieurs sous ensemble)

    - S'il n' y avait qu'un enregistrement , on propose la suppression de l'article après message de confirmation dans Tab_Articles_Indice (2).

    - Compte dans la Tab_Articles_Indice (2) si l'article 9005221A n'avait qu'un seul indice (donc pas de 9005221B par exemple)

    - S'il n' y avait qu'un enregistrement , on propose la suppression de l'article après message de confirmation dans Tab_Articles_Principale (1).

    voilà le code que j'ai essayé de faire avec tes indications
    le problème c'est que que j'essaye mon code , déja il me dit : " Loop sans Do " alors que je les ai mis....

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    DoCmd.SetWarnings True
    DoCmd.RunCommand acCmdSaveRecord
     
    Dim Txt_mem_indice As Variant
    Txt_mem_indice = Forms![F_Articles_Fiche]![F_Articles_Fiche_Indices].Form.[N°_auto_Article_indice]
    'Dim Varcodearticle_indice As Variant
     
    'VarCodearticle = Me.N°_article_indice_SS_ensemble
     
     
    Dim varcount As Integer
    Dim varcount1 As Integer
    Dim varcount2 As Integer
    varcount = DCount("N°_auto_Article_ss_ensemble", "Tbl_Articles_SS_ensemble", "[Coche_selection_article_ss_ensemble]=-1")
     
    If varcount = 0 Then
     
        MsgBox ("Veuillez sélectionner au moins 1 élément")
     
    Else
     
        Dim strMsg As String
            strMsg = "Voulez vous supprimer cet (ces) enregistrement(s) ?" 'On met le message "Voulez-vous.. " dans une variable appelée strMsg
     
        If MsgBox(strMsg, vbQuestion + vbYesNo, "Confirmation:") = vbYes Then 'On crée une fenêtre qui demande oui ou non à la question posée. Si la réponse au message strMsg est oui alors
     
     
     
     
     
                 Dim fso As FileSystemObject
                 Dim Nomrépertoire As String
                 Dim Var_indice As Variant
                 Dim Rst As DAO.Recordset
     
     
                 Set Rst = CurrentDb.OpenRecordset("R_Articles_Fiche_SS_ensemble_Selection_suppression")
     
                 Do While Rst.EOF
     
     
                 VarCodearticle = Rst![N°_article_indice_SS_ensemble]
                 Var_indice = Rst![N°_indice]
     
                 varcount1 = DCount("[N°_auto_Article_ss_ensemble]", "Tbl_Articles_SS_ensemble", "[N°_article_indice_SS_ensemble]='" & Rst![N°_article_indice_SS_ensemble] & " ' ")
     
                 DoCmd.RunSQL "DELETE Tbl_Articles_SS_ensemble.* From Tbl_Articles_SS_ensemble WHERE (((Tbl_Articles_SS_ensemble.Coche_selection_article_ss_ensemble)=True)) and (([N°_article_indice_SS_ensemble])=" & Rst![N°_article_indice_SS_ensemble] & "));"
     
                 If varcount1 = 1 Then
     
                   Dim strMsg1 As String
                   strMsg1 = "L'article " & VarCodearticle & " n'est plus utilisé dans un Sous-ensemble." & vbCrLf & "Voulez vous supprimer définitivement cet enregistrement ?" 'On met le message "Voulez-vous.. " dans une variable appelée strMsg
     
                   If MsgBox(strMsg1, vbQuestion + vbYesNo, "Confirmation:") = vbYes Then 'On crée une fenêtre qui demande oui ou non à la question posée. Si la réponse au message strMsg est oui alors
     
     
                         If Var_indice = "A" Then
                             Nomrépertoire = "\\SERVEUR\Access\Données plans\" & Left(VarCodearticle, 7) ' nom complet du répertoire sur le serveur
                         Else
                             Nomrépertoire = "\\SERVEUR\Access\Données plans\" & VarCodearticle ' nom complet du répertoire sur le serveur
                         End If
     
                    fso.DeleteFolder Nomrépertoire, True ' Suppression du dossier
     
     
                    DoCmd.RunSQL "DELETE Tbl_Articles_Ind.* From Tbl_Articles_Ind WHERE (((Tbl_Articles_Ind.N°_article_indice)=Codearticle()));"
     
     
     
     
                    VarCodearticle = Left(VarCodearticle, 7)
                    varcount2 = DCount("[N°_auto_Article_indice]", "Tbl_Articles_Ind", "[N°_article]=" & VarCodearticle)
                    If varcount2 = 1 Then
                    DoCmd.RunSQL "DELETE Tbl_Articles_Principale.*, Tbl_Articles_Principale.N°_article From Tbl_Articles_Principale WHERE (((Tbl_Articles_Principale.N°_article)=Codearticle()));"
                    End If
     
     
     
     
     
                Set fso = Nothing
     
                Rst.MoveNext
     
                Loop
     
     
                Forms![F_Articles_Fiche].Requery
                Forms![F_Articles_Fiche].SetFocus
                DoCmd.GoToControl "N°_auto_Article_indice"
                DoCmd.FindRecord Txt_mem_indice
     
                End If
            End If
     
            DoCmd.SetWarnings True
     
     
            Me.Requery
     
        Else
     
        Me.Requery
     
     
        End If
     
    End If
     
    DoCmd.SetWarnings False
    DoCmd.RunSQL "UPDATE Tbl_Articles_ss_ensemble SET Tbl_Articles_ss_ensemble.Coche_selection_article_ss_ensemble = False  WHERE (((Tbl_Articles_ss_ensemble.Coche_selection_article_ss_ensemble)=True));"
    DoCmd.SetWarnings True
     
     
    End Sub

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    1ère chose mettre Not Rst.EOF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do While Not Rst.EOF
    ...traitement
    Rst.MoveNext
    Loop
    Ensuite bien penser à instancier fso au début du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set fso = New FileSystemObject
    J'aurais une question simple :

    La requête "R_Articles_Fiche_SS_ensemble_Selection_suppression" contient-elle des enregistrement susceptibles d'être supprimés dans la boucle ?

    Ensuite, concernant la suppression en cascade, auriez-vous la possibilité de cocher cette option dans vos relations pour qu'Access fasse le travail directement ?

    Si je reprends vos codes pour supprimer les articles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "DELETE Tbl_Articles_Ind.* From Tbl_Articles_Ind WHERE (((Tbl_Articles_Ind.N°_article_indice)=Codearticle()));"
    Apparemment Codearticle() est une fonction, je pense qu'il faudrait plutôt mettre un paramètre.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Bonjour
    oui la requête comprend bien des enregistrements pouvant être supprimé dans la boucle

    ensuite pour la suppression en cascade cela ne fonctionne pas
    car c'est une suppression inversée :
    je ne veux pas forcément effacer l'enregistrement dans la tab (1) car l'enregistrement peux être utilisé pour un autre sous ensemble.

    Et pour Info j'ai bien mis le While Not
    Il continue à me dire que il y a un "Loop sans Do"

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Pas oublier le do avant le while..vérifier aussi s'il ne vous manque pas un end if dans la boucle.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Bonjour
    Alors voilà j'ai repris étape par étape et mon code fonctionne comme ci dessous
    (en fait j'avais pas mis le code dans le bon ordre pour que cela fonctionne)

    donc ci dessous un code fonctionnel qui pourra peut être aider pour le prochain

    Un grand merci pour votre aide en tout cas

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    DoCmd.RunCommand acCmdSaveRecord
     
    Dim Txt_mem_indice As Variant
    Txt_mem_indice = Forms![F_Articles_Fiche]![F_Articles_Fiche_Indices].Form.[N°_auto_Article_indice]
     
    Dim varcount As Integer
    varcount = DCount("N°_auto_Article_ss_ensemble", "Tbl_Articles_SS_ensemble", "[Coche_selection_article_ss_ensemble]=-1")
     
    If varcount = 0 Then
     
        MsgBox ("Veuillez sélectionner au moins 1 élément")
     
    Else
     
     
        Dim strMsg As String
                strMsg = "Voulez vous supprimer cet (ces) enregistrement(s) ?" 'On met le message "Voulez-vous.. " dans une variable appelée strMsg
     
            If MsgBox(strMsg, vbQuestion + vbYesNo, "Confirmation:") = vbYes Then 'On crée une fenêtre qui demande oui ou non à la question posée. Si la réponse au message strMsg est oui alors
     
                        DoCmd.SetWarnings False
     
                        Dim var_indice As Variant
                        Dim var_article As Variant
     
     
     
                        Dim fso As FileSystemObject
                        Set fso = New FileSystemObject
     
                        Dim Rst As DAO.Recordset
     
                        Set Rst = CurrentDb.OpenRecordset("R_Articles_Fiche_SS_ensemble_Selection_suppression")
     
                        Do While Not Rst.EOF
     
                        VarCodearticle = Rst![N°_article_indice_SS_ensemble]
     
     
                        DoCmd.RunSQL "DELETE Tbl_Articles_SS_ensemble.* From Tbl_Articles_SS_ensemble WHERE (((Tbl_Articles_SS_ensemble.Coche_selection_article_ss_ensemble)=True)) and (([N°_article_indice_SS_ensemble])=(Codearticle()));"
     
                        Dim varcount_article_utilisé_ss_ensemble As Integer
                        varcount_article_utilisé_ss_ensemble = DCount("[N°_auto_Article_ss_ensemble]", "Tbl_Articles_SS_ensemble", "[N°_article_indice_SS_ensemble]='" & VarCodearticle & " ' ")
     
                        If varcount_article_utilisé_ss_ensemble = 0 Then
                                Dim strMsg1 As String
                                strMsg1 = "L'article " & VarCodearticle & " n'est plus utilisé dans un Sous-ensemble." & vbCrLf & "Voulez vous supprimer définitivement cet enregistrement ?" 'On met le message "Voulez-vous.. " dans une variable appelée strMsg
     
                                        If MsgBox(strMsg1, vbQuestion + vbYesNo, "Confirmation:") = vbYes Then 'On crée une fenêtre qui demande oui ou non à la question posée. Si la réponse au message strMsg est oui alors
     
     
     
                                                Dim Nomrépertoire As Variant
                                                If Right(VarCodearticle, 1) = "A" Then
                                                Nomrépertoire = "\\SERVEUR\Access\Données plans\" & Left(VarCodearticle, 7) ' nom complet du répertoire sur le serveur
                                                Else
                                                Nomrépertoire = "\\SERVEUR\Access\Données plans\" & VarCodearticle ' nom complet du répertoire sur le serveur
                                                End If
     
                                                fso.DeleteFolder Nomrépertoire, True ' Suppression du dossier
     
     
                                                DoCmd.RunSQL "DELETE Tbl_Articles_Ind.* From Tbl_Articles_Ind WHERE (((Tbl_Articles_Ind.N°_article_indice)= Codearticle() ));"
     
                                                 Dim varcount1 As Integer
                                                varcount1 = DCount("[N°_auto_Article_indice]", "Tbl_Articles_Ind", "[N°_article]=" & Left(VarCodearticle, 7))
     
                                                If varcount1 = 0 Then
                                                DoCmd.RunSQL "DELETE Tbl_Articles_Principale.*, Tbl_Articles_Principale.N°_article From Tbl_Articles_Principale WHERE (((Tbl_Articles_Principale.N°_article)= left(Codearticle(),7)));"
                                                End If
                                         End If
                        End If
     
                        Rst.MoveNext
     
                        Loop
     
                        Set fso = Nothing
                        VarCodearticle = Null
                        Me.Requery
     
                        DoCmd.SetWarnings True
     
                        Forms![F_Articles_Fiche].Requery
                        Forms![F_Articles_Fiche].SetFocus
                        DoCmd.GoToControl "N°_auto_Article_indice"
                        DoCmd.FindRecord Txt_mem_indice
     
            Else
     
     
                DoCmd.SetWarnings False
                DoCmd.RunSQL "UPDATE Tbl_Articles_ss_ensemble SET Tbl_Articles_ss_ensemble.Coche_selection_article_ss_ensemble = False  WHERE (((Tbl_Articles_ss_ensemble.Coche_selection_article_ss_ensemble)=True));"
                DoCmd.SetWarnings True
                Me.Requery
     
            End If
     
     
    End If

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

Discussions similaires

  1. [Débutant] coché les radiobuttons depuis une table sql
    Par Sjida dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/07/2014, 15h10
  2. [Exchange 2010] Comment accéder aux dossiers publics d'Exchange 2010 depuis une application tierce ?
    Par [ZiP] dans le forum Exchange Server
    Réponses: 2
    Dernier message: 20/08/2011, 12h58
  3. Mettre élément WPF depuis une classe
    Par juliensmarties dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 07/07/2010, 10h28
  4. recuperation d'éléments pères depuis une iframe servlet
    Par progamer54 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/01/2009, 11h38
  5. Piloter plusieurs bases Access depuis une autre base
    Par BAYRAL dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/01/2008, 15h06

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