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 :

problème de code


Sujet :

Access

  1. #1
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut problème de code
    Bonjour,

    j'ai fait un code, qui à l'air de fonctionner... en tout cas pas de message d'erreur, sauf que... cette partie ne fonctionne 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
     
    MsgBox Me.surbrillance
     
      FileCopy "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" & infopesee & ".PDF", chemin_dossier3 & "\" & nomcoller & ".pdf"
     
    Do While Me.CurrentRecord < Me.Recordset.RecordCount
    If Me.CurrentRecord < Me.Recordset.RecordCount Then
        DoCmd.GoToRecord , , acNext
     
    MsgBox Me.surbrillance
      FileCopy "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" & infopesee & ".PDF", chemin_dossier3 & "\" & nomcoller & ".pdf"
     
    Else
        DoCmd.RunCommand acCmdSaveRecord
    End If
    Loop
    je m'explique, il me lit bien ma msgbox, mais ne copie pas le fichier PDF, à part le premier avant le "Do While", est ce que vous auriez une explication?? une solution éventuellement....

    je vous met le code en entier en espérant que quelqu'un pourra me donner une idee,


    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
    Private Sub enregistrePDF()
    '*********
    'création du fichier si inexistant
    DoCmd.Requery
    'creation d'un dossier pour la commande
    Dim infoClient As String
    Dim infoProduit As String
    Dim infoDate As String
    Dim infoAna As String
    Dim infotype As String
     
    infoDate = Me.DteAn
     
    If IsNull(Me.txtana) Then
        If Me.Texte278 = "E" Then
        infotype = "801.000 - Versage"
        Else
        infotype = "701.000 - Enlevement"
        End If
    infoClient = "Ecodream" & " - " & Me.Client
    infoProduit = Me.Client & " - " & Me.TxtProduit
    Else
    infoAna = Me.txtana
    infoClient = Me.Client
    infoProduit = Me.TxtProduit
    End If
    infopesee = "pesee" & Me.surbrillance
    nomcoller = Me.surbrillance
     
     
    'creation d'un dossier pour la commande
    Dim chemin_dossier1 As String
    Dim chemin_dossier2 As String
    Dim chemin_dossier3 As String
     
    Dim chemin As String
    chemin = "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\"  'Form_F_Menu.CheminFichier ' chemin vers le dossier à créer"
     
    'dossier
    chemin_dossier1 = chemin & infoAna & " - " & infoClient
    chemin_dossier2 = chemin_dossier1 & "\" & infoDate
    chemin_dossier3 = chemin_dossier2 & "\" & infoProduit
    'verifie la chemin
    If Dir(chemin_dossier1, vbDirectory) <> vbNullString Then
    Else
    'dossier existe pas
        MkDir (chemin_dossier1)
     
    End If
     
    If Dir(chemin_dossier2, vbDirectory) <> vbNullString Then
    Else
    'dossier existe pas
        MkDir (chemin_dossier2)
     
    End If
     
    If Dir(chemin_dossier3, vbDirectory) <> vbNullString Then
     
    'dossier existe
     
    Else
    'dossier existe pas
        MkDir (chemin_dossier3)
     
    End If
     
    '******************
    'transfere des bons de pesee
    '1ere valleur du formulaire
    MsgBox Me.surbrillance
     
      FileCopy "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" & infopesee & ".PDF", chemin_dossier3 & "\" & nomcoller & ".pdf"
     
    Do While Me.CurrentRecord < Me.Recordset.RecordCount
    If Me.CurrentRecord < Me.Recordset.RecordCount Then
        DoCmd.GoToRecord , , acNext
     
    MsgBox Me.surbrillance
      FileCopy "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" & infopesee & ".PDF", chemin_dossier3 & "\" & nomcoller & ".pdf"
     
    Else
        DoCmd.RunCommand acCmdSaveRecord
    End If
    Loop
     
    'ouvrir et sauvegarder le document
     
    DoCmd.OpenReport "E_Relever", acViewPreview  ' ouvrir le formulaire suivant le n°commande
    DoCmd.OutputTo acOutputReport, "E_Relever", acFormatPDF, chemin_dossier3 & "\" & infoProduit & ".pdf"
     
    End Sub
    un tout grand merci,

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 548
    Points
    24 548
    Par défaut
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Do While Me.CurrentRecord < Me.Recordset.RecordCount
    If Me.CurrentRecord < Me.Recordset.RecordCount Then
        DoCmd.GoToRecord , , acNext
     
    MsgBox Me.surbrillance
      FileCopy "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" & infopesee & ".PDF", chemin_dossier3 & "\" & nomcoller & ".pdf"
     
    Else
        DoCmd.RunCommand acCmdSaveRecord
    End If
    Loop
    Tu veux faire quoi avec ce code ?

    Cordialement,

  3. #3
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    concrètement,

    je veux copier des fichiers pdf dans un autre dossier, que je crée avec certaine information qui se trouve dans mon formulaire suivant ma requête,

    ensuite j'ai besoin de la liste de numéro que me sort la requête, afin de savoir quel fichier aller copier dans le chemin du dossier,

    donc a chaque "recherche" je me retrouve avec des n° différents, et des chemins de dossier différents

    et il faut que le nbr de PDF copier soit le même, et avec les même référence,

  4. #4
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    je retourne le probléme dans tous les sens,

    mais je pense que pour etre plus clair il me faudrait une boucle qui executerait le copier/coller du pdf à chaque ligne de mon formulaire,

    et je pense que c'est la que ca pose probléme,

    tant que je suis sur la ligne il exécute, mais pas sur les ligne d'aprés,

    alors qu'il faudrait du 1 er au dernier enregistrement

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 770
    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 770
    Points : 14 812
    Points
    14 812
    Par défaut
    bonsoir,
    mais je pense que pour etre plus clair il me faudrait une boucle qui executerait le copier/coller du pdf à chaque ligne de mon formulaire,
    il faut lire le jeu d'enregistrements (Recordset) et pas l'enregistrement actif du formulaire, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim ors As Recordset
    Set ors = Me.RecordsetClone ' on copie le recordset
     
    If ors.RecordCount > 0 Then
         ors.MoveFirst
         Do Until ors.EOF
     
            ' ici le code à mettre en œuvre en utilisant les champs du Recordset: ors.Fields("Client") au lieu de: Me.Client etc.
            ors.MoveNext
         Loop
    End If
    Set ors = Nothing
    :

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour svbb25,

    Que vient faire le qui est surement une fonction "utilisateur".

    De plus dans votre boucle "Do While" vous passez les enregistrements mais vous ne modifiez jamais le "FileCopy", donc pour chaque enregistrement vous copiez toujours le premier enregistrement, c'est à dire que la ligne 80 est toujours égale à la ligne 73.

    Bonne journée

  7. #7
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    merci pour ta reponse,

    je vais peux etre avoir l'air un peu... mais...

    voici ce que j'ai fait si j 'ai tout compris... (mais je pense 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
    Dim ors As Recordset
    Set ors = Me.RecordsetClone ' on copie le recordset
     
    If ors.RecordCount > 0 Then
         ors.MoveFirst
     
    Do While Me.CurrentRecord < Me.Recordset.RecordCount
    If Me.CurrentRecord < Me.Recordset.RecordCount Then
        DoCmd.GoToRecord , , acNext
    Else
        DoCmd.RunCommand acCmdSaveRecord
    End If
    Loop
     
    End If
    Set ors = Nothing
    j'ai essayé comme cela aussi

    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
    Dim ors As Recordset
    Set ors = Me.RecordsetClone ' on copie le recordset
     
    If ors.RecordCount > 0 Then
         ors.MoveFirst
         Do Until ors.EOF
     
         MsgBox Me.surbrillance
     
         FileCopy "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" & infopesee & ".PDF", chemin_dossier3 & "\" & nomcoller & ".pdf"
        ors.MoveNext
     
         Loop
    End If
    Set ors = Nothing
    mais le premier PDF est bien copier mais cela ne le fait pas sur les autres

    je suppose que j'ai fait un truc de travers mais je vois pas trop quoi :-)

  8. #8
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Robert1957 Voir le message
    Bonjour svbb25,

    Que vient faire le qui est surement une fonction "utilisateur".

    De plus dans votre boucle "Do While" vous passez les enregistrements mais vous ne modifiez jamais le "FileCopy", donc pour chaque enregistrement vous copiez toujours le premier enregistrement, c'est à dire que la ligne 80 est toujours égale à la ligne 73.

    Bonne journée
    merci pour ta réponse, mais comment je peux modifier le filecopy? en vrai c'est la première fois que j utilise ce code :-/

    et le me.surbrillance, c'etait juste pour voir s'il descendais bien d'enregistrement, donc vraiment pas utile dans le code :-)

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 770
    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 770
    Points : 14 812
    Points
    14 812
    Par défaut
    voici ce que j'ai fait si j 'ai tout compris... (mais je pense pas
    en effet, le premier code est tout à fait inopérant ... il va falloir que je donne plus d'explications. En utilisant le Recordset du formulaire on lit tous les enregistrements, il ne faut donc pas faire référence à (Me.Controls) mais aux champs de la requête source (Recordset.Fields)
    C'est ce que j'ai mis en commentaire dans mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ' ici le code à mettre en œuvre en utilisant les champs du Recordset: ors.Fields("Client") au lieu de: Me.Client etc.
    il ne faut pas faire référence aux contrôles du formulaire sauf si c'est un contrôle indépendant c'est à dire un champ qui ne vient pas de la table ou la requête source.
    Par exemple, remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    infopesee = "pesee" & Me.surbrillance
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     infopesee = "pesee" & orst.Fields("surbrillance")
    si, bien sûr, surbrillance est un champ de la table, sinon ne pas changer
    remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    infoClient = "Ecodream" & " - " & Me.Client
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    infoClient = "Ecodream" & " - " & orst.Fields("Client")
    ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    infoDate = Me.DteAn
     
    If IsNull(Me.txtana) Then
        If Me.Texte278 = "E" Then
        infotype = "801.000 - Versage"
        Else
        infotype = "701.000 - Enlevement"
        End If
     'etc.
    devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    infoDate = orst.Fields("DteAn")
     
    If IsNull(orst.Fields("txtana")) Then
        If orst.Fields("Texte278") = "E" Then
            infotype = "801.000 - Versage"
        Else
            infotype = "701.000 - Enlevement"
        End If
    ' etc.
    Attention: Texte278 semble être le nom d'un contrôle du formulaire, il faudrait mettre celui qui se trouve dans la propriété Source contrôle ( sauf si il n'y en a pas dans ce cas c'est un contrôle indépendant et il ne faut donc rien changer)
    Toutes ces modifications une fois faites sont à déplacer à l'intérieur de la boucle

  10. #10
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour svbb25, tee_grandbois, loufab,

    Premièrement dans votre code je ne vois pas l'utilité des lignes 15 à 19. Vous ne reprenez pas la variable "infotype" ailleurs dans votre code.

    Deuxièmement je supprimerais les 40 à 66 pour les remplacer par un code plus simple qui doit être inclus dans la boucle. Pour ce faire, je créerais un module "moUtilitaire" et à l'intérieur de ce module une fonction comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function fuCreerDossier(strDossier As String)
    On Error GoTo GestionErreurs
     
        MkDir strDossier
     
    Exit Function
    GestionErreurs:
        Select Case Err.Number
            Case 75 'le dossier existe déjà
            Resume Next
        Case Else
            MsgBox "Erreur dans fuDossier" & " " & Err.Number & " " & Err.Description
        End Select
    End Function
    Ensuite le code suivant:
    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
    Private Sub enregistrePDF()
    On Error GoTo gestion_err
     
        Dim infoClient As String
        Dim infoProduit As String
        Dim infoDate As String
        Dim infoAna As String
        Dim chemin As String
        Dim ors As Recordset
     
        Me.Requery 'Je ne sais pas si nécessaire mais ça vient de votre code
        Set ors = Me.RecordsetClone ' on copie le recordset
     
        If ors.RecordCount > 0 Then
            ors.MoveFirst
            Do Until ors.EOF
                If IsNull(ors("ana")) Then 'Je suppose que txtana est le champ ana dans votre table
                    infoClient = "Ecodream" & " - " & ors("Client") ' En passant les espaces c'est pas bon
                    infoProduit = ors("Client") & " - " & ors("Produit")
                Else
                    infoAna = ors("ana")
                    infoClient = ors("Client")
                    infoProduit = ors("Produit")
                End If
                infopesee = "pesee" & ors("surbrillance")
                nomcoller = ors("surbrillance")
                chemin = "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" 'Ici on suppose que le répertoire est existant
                'Ici c'est la création des différents répertoires
                fuCreerDossier chemin & infoAna & " - " & infoClient
                chemin = chemin & infoAna & " - " & infoClient
                fuCreerDossier chemin & "\" & infoDate
                chemin = chemin & "\" & infoDate
                fuCreerDossier chemin & "\" & infoProduit
                'Ici on copie le fichier dans différent dossiers
                FileCopy "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" & infopesee & ".PDF", chemin & "\" & nomcoller & ".pdf"
            ors.MoveNext
         Loop
         Set ors = Nothing
    End If
    Set ors = Nothing
    Sortie:
    Exit Sub
    gestion_err:
    MsgBox Err.Description & Chr(13) & "Erreur # " & Err.Number
    Resume Sortie
    End Sub
    Comme je n'ai pas votre Bd je n'ai pu tester et il y aura probablement des ajustements au niveau des noms de champs mais c'est l'idée générale tel que mentionné par tee_grandbois

    Bonne journée

  11. #11
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    bonjour,

    d'abord et avant tout je voulais vraiment vous remercier pour le temps que vous m'accordez,

    mais

    j'ai essayé le premier de
    @tee_grandbois
    ,

    et il me dit erreur d'exécution '424' : objet requis

    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
    Private Sub enregistrePDF()
    '*********
    'création du fichier si inexistant
    Dim ors As Recordset
    Set ors = Me.RecordsetClone ' on copie le recordset
    'creation d'un dossier pour la commande
    Dim infoClient As String
    Dim infoProduit As String
    Dim infoDate As String
    Dim infoAna As String
    Dim infotype As String
     
     
    infoDate = Me.DteAn
    infoClient = orst.Fields("Client")
    infoAna = Me.txtana
    infoProduit = orst.Fields("Produit")
    infopesee = "pesee" & orst.Fields("numero_pesee")
    nomcoller = orst.Fields("numero_pesee")
     
    If IsNull(Me.txtana) Then
        If Me.Texte278 = "E" Then
        infotype = "801.000 - Versage"
        Else
        infotype = "701.000 - Enlevement"
        End If
     
    infoClient = "Ecodream" & " - " & orst.Fields("Client")
    infoProduit = orst.Fields("Client") & " - " & orst.Fields("Produit")
    Else
    End If
     
     
    'creation d'un dossier pour la commande
    Dim chemin_dossier1 As String
    Dim chemin_dossier2 As String
    Dim chemin_dossier3 As String
     
    Dim chemin As String
    chemin = "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\"  'Form_F_Menu.CheminFichier ' chemin vers le dossier à créer"
     
    'dossier
    chemin_dossier1 = chemin & infoAna & " - " & infoClient
    chemin_dossier2 = chemin_dossier1 & "\" & infoDate
    chemin_dossier3 = chemin_dossier2 & "\" & infoProduit
    'verifie la chemin
    If Dir(chemin_dossier1, vbDirectory) <> vbNullString Then
    Else
    'dossier existe pas
        MkDir (chemin_dossier1)
     
    End If
     
    If Dir(chemin_dossier2, vbDirectory) <> vbNullString Then
    Else
    'dossier existe pas
        MkDir (chemin_dossier2)
     
    End If
     
    If Dir(chemin_dossier3, vbDirectory) <> vbNullString Then
     
    'dossier existe
     
    Else
    'dossier existe pas
        MkDir (chemin_dossier3)
     
    End If
     
    '******************
    'transfere des bons de pesee
    '1ere valleur du formulaire
     
     If ors.RecordCount > 0 Then
         ors.MoveFirst
         Do Until ors.EOF
     
      FileCopy "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" & infopesee & ".PDF", chemin_dossier3 & "\" & nomcoller & ".pdf"
            ors.MoveNext
         Loop
    End If
    Set ors = Nothing
     
     
    'ouvrir et sauvegarder le document
     
    DoCmd.OpenReport "E_Relever", acViewPreview  ' ouvrir le formulaire suivant le n°commande
    DoCmd.OutputTo acOutputReport, "E_Relever", acFormatPDF, chemin_dossier3 & "\" & infoProduit & ".pdf"
     
    End Sub
    celui de
    Robert1957
    il me dit : élément non trouver-é dans cette collection. erreur #3265
    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
    Private Sub Commande1012_Click()
    On Error GoTo gestion_err
     
        Dim infoClient As String
        Dim infoProduit As String
        Dim infoDate As String
        Dim infoAna As String
        Dim chemin As String
        Dim ors As Recordset
     
        Me.Requery 'Je ne sais pas si nécessaire mais ça vient de votre code
        Set ors = Me.RecordsetClone ' on copie le recordset
     
        If ors.RecordCount > 0 Then
            ors.MoveFirst
            Do Until ors.EOF
                If IsNull(ors("ana")) Then 'Je suppose que txtana est le champ ana dans votre table
                    infoClient = "Ecodream" & " - " & ors("Client") ' En passant les espaces c'est pas bon
                    infoProduit = ors("Client") & " - " & ors("Produit")
                Else
                    infoAna = ors("ana")
                    infoClient = ors("Client")
                    infoProduit = ors("Produit")
                End If
                infopesee = "pesee" & ors("surbrillance")
                nomcoller = ors("surbrillance")
                chemin = "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" 'Ici on suppose que le répertoire est existant
                'Ici c'est la création des différents répertoires
                fuCreerDossier chemin & infoAna & " - " & infoClient
                chemin = chemin & infoAna & " - " & infoClient
                fuCreerDossier chemin & "\" & infoDate
                chemin = chemin & "\" & infoDate
                fuCreerDossier chemin & "\" & infoProduit
                'Ici on copie le fichier dans différent dossiers
                FileCopy "C:\Users\Ecodream10\Desktop\Programme\Gestion globale\" & infopesee & ".PDF", chemin & "\" & nomcoller & ".pdf"
            ors.MoveNext
         Loop
         Set ors = Nothing
    End If
    Set ors = Nothing
    Sortie:
    Exit Sub
    gestion_err:
    MsgBox Err.Description & Chr(13) & "Erreur # " & Err.Number
    Resume Sortie
    End Sub
    Public Function fuCreerDossier(strDossier As String)
    On Error GoTo GestionErreurs
     
        MkDir strDossier
     
    Exit Function
    GestionErreurs:
        Select Case Err.Number
            Case 75 'le dossier existe déjà
            Resume Next
        Case Else
            MsgBox "Erreur dans fuDossier" & " " & Err.Number & " " & Err.Description
        End Select
    End Function
    je sais que j'en demande beaucoup mais si j'arrive à faire cette dernière chose j'aurais complétement fini

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 770
    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 770
    Points : 14 812
    Points
    14 812
    Par défaut
    bonjour,
    quel que soit le code, si il y a un message d'erreur, ce serait bien de nous préciser la ligne en erreur (celle qui est surlignée en jaune dans la fenêtre VBA), sans cela on ne peut pas aider.

    Mais, connaissant assez bien dans quelles circonstances ces erreurs surviennent, je peux te dire que:
    avec l'erreur 424 objet requis: il est possible que le code ne connaisse pas un des objets déclarés: cela peut être parce que la sub enregistrePDF() ne connait pas l'objet Me.Recordsetclone peut-être parce que la sub n'est pas dans le formulaire mais dans un module standard, il faut faire en sorte de déplacer la sub dans le code VBA du formulaire.

    avec l'erreur 3265 élément non trouvé dans la collection: un des champs n'est pas connu dans le Recordset. Cela veut dire, qu'un ou plusieurs champs sont inexistants ou ont un nom mal orthographié.
    Comme te l'a fait remarquer Robert1957:
    Comme je n'ai pas votre Bd je n'ai pu tester et il y aura probablement des ajustements au niveau des noms de champs mais c'est l'idée générale tel que mentionné par tee_grandbois
    Je te rappelle que le Recordset représente le jeu de données tel que défini dans la propriété Source du formulaire, qui peut être une requête ou une table. Donc, si l'erreur intervient sur une ligne comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNull(ors("ana")) Then 'Je suppose que txtana est le champ ana dans votre table
    cela veut dire que le champ ana n'existe pas, il faut regarder dans la propriété Source du formulaire (ou bien dans la propriété Source contrôle de chaque contrôle du formulaire) et mettre le bon nom de champ.
    Car il ne suffit pas de copier/coller le code qu'on te donne sans chercher à comprendre, il faut que tu interviennes un minimum.

    Je te conseille de rester sur le code que t'as donné Robert1957 et corriger les erreurs en conséquence

  13. #13
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    je te remercie pour ta réponse,

    effectivement, c est mieux de comprendre et c est ce que j'essaye de faire :-)

    mais c est pas toujours évident :-D

    le problème c'était que le "IsNull(ors("ana"))" est une zone texte indépendant et donc je l'ai mis en me.txtana et du coup

    ca marche super,

    je vous remercie, une très belle soirée

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

Discussions similaires

  1. problème de code avec un tableau
    Par richard038 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/05/2006, 17h35
  2. problème de code javascript pour une vue 360°
    Par tomguiss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 22h50
  3. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 11h00
  4. Problème de code besoin d un petit depannage
    Par rakengoule dans le forum MFC
    Réponses: 3
    Dernier message: 10/10/2005, 16h25
  5. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 11h02

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