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

Macros et VBA Excel Discussion :

Recherche, impression et envoi


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 2
    Par défaut Recherche, impression et envoi
    Bonjour à tous,

    J'essai de créer un programme afin de pouvoir imprimer des dossiers de plusieurs pdf.
    Une première boucle a été créée afin de gérer l’entièreté des lignes.
    Il s'organise en trois étapes :
    -1ère étape vérifier si le pdf du plan, correspondant à l'ordre de fabrication, (en colonne A et B de la feuille) est existant dans le dossier spécifié. Si oui, imprimer les 3 documents.
    -2ème étape, si pdf du plan non présent, vérifier s'il ne fait pas partie des plan générique (la liste étant en colonne G et H de la feuille).
    -3ème étape, si pas de plan et pas de plan générique, il faut envoyer l'ordre de fabrication par mail (compiler l'ensemble des OF sans plan dans un seul mail).

    Sans prendre en compte l'étape 2, tout se passer bien, mais je n'arrive pas à intégrer cette étape.

    ci dessous le code,

    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
    Option Explicit
     
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String _
        , ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
     
     
    Public Function FichierExiste(MonFichier As String)
    'par Excel-Malin.com ( [http://excel-malin.com] )
     
       If Len(Dir(MonFichier)) > 0 Then
          FichierExiste = True
       Else
          FichierExiste = False
       End If
    End Function
    Sub ImprimerFichier()
        Dim NomFichier1 As String
        Dim NomFichier2 As String
        Dim NomFichier3 As String
        Dim x As Long
        Dim nbLignes As Integer
        Dim I As Integer
        Dim ObjOutlook As New Outlook.Application
        Dim oBjMail
        Dim Nom_Fichier As String
        Dim Nom_Fichier_2 As String
     
     
        Set ObjOutlook = New Outlook.Application
        Set oBjMail = ObjOutlook.CreateItem(olMailItem)
     
        x = FindWindow("XLMAIN", Application.Caption)
     
     
    Range("A2").Select
    nbLignes = Range("A2", Selection.End(xlDown)).Cells.Count
     
     
    For I = 2 To nbLignes
     
    Dim MonFichier As String
    MonFichier = "P:\BE\DOSSIER_FAB\" & Cells(I, 1) & ".pdf"
     
               If FichierExiste(MonFichier) = True Then
     
     
                    NomFichier1 = "C:\Users\sleroy\Desktop\Impression OF\" & Cells(I, 2) & ".pdf"
                    ShellExecute x, "print", NomFichier1, False, False, 1
     
                    NomFichier2 = "C:\Users\sleroy\Desktop\Impression OF\Enregistrement Contrôles.pdf"
                    ShellExecute x, "print", NomFichier2, False, False, 1
     
                    NomFichier3 = "P:\BE\DOSSIER_FAB\" & Cells(I, 1) & ".pdf"
                    ShellExecute x, "print", NomFichier3, False, False, 1
     
     
                Else
     
     
                    Nom_Fichier = "C:\Users\ccc\Desktop\Impression OF\" & Cells(I, 2) & ".pdf"
     
     
                    With oBjMail
                        .To = "méthodes@ccc.fr" ' le destinataire
                        .Subject = "OF Jaune/OF vert"          ' l'objet du mail
                        .Body = "Bonjour," & vbCrLf & vbCrLf & "Les plans de ces OFs ne se trouvent pas dans la base de données accessible par la logistique. Merci de préparer ces OFs (vert ou jaune). OFs en pièces jointes. " & vbCrLf & vbCrLf & "Cdt," 'le corps du mail ..son contenu
                        .Attachments.Add Nom_Fichier '"C:\Data\essai.txt" ' ou Nomfichier
     
                    End With
     
                End If
     
    Next
     
        With oBjMail
            .Send
        End With
     
     
        Set oBjMail = Nothing
        Set ObjOutlook = Nothing
     
    End Sub
    Pouvez vous m'aider?

    Merci d'avance

    Cdt,

    Sébastien

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Ta difficulté est-elle finalement de rechercher si l'une des cellules d'une plage spécifiée contient une valeur (une chaîne de caractères) spécifiée ?
    Si oui : tout le reste de ton code n'a pas à être montré ici.
    C'est cela, qui s'appelle "isoler une difficulté spécifique"
    Ta réponse ?

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 2
    Par défaut
    Bonjour unparia,

    Pour faire simple, 90% de nos plans sont uniques et certains plans regroupent plusieurs références (en colonne A) ce que l'on appelle plan générique.
    J'ai regroupé en colonne G les références faisant partie de ces plans et en colonne H le nom du plan générique.
    En fait tout fonctionnait avant que j'essai de faire une double boucle pour gérer ces plans génériques.
    Maintenant, soit ça ne gère pas toute la liste de la colonne A, soit ça imprime à l'infini les documents ou soit cela m'imprime les bons documents mais envoi quand même un mail avec un grand nombre de fois le même plan.

    En espérant être assez clair..

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Excuse-moi, mais (c'est ma "religion" personnelle) je m'en tiens et veux m'en tenir à ceci :
    Sans prendre en compte l'étape 2, tout se passer bien, mais je n'arrive pas à intégrer cette étape.
    Réponse : mise en oeuvre de la méthode Range.Find (rubrique Range.Find, méthode de ton aide VBA interne)
    -->> elle retourne une adresse si valeur trouvée ou rien (Nothing) si non trouvée
    Le reste relève de l'organisation de ton code et ne m'intéresse pas

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    la méthode Range.Find retournant soit un objet Range - une cellule - soit rien …

    ___________________________________________________________________________________________________________
    Je suis Paris, New-York, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

Discussions similaires

  1. Arbre binaire de recherche, impressions
    Par AnozerOne dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 15/05/2010, 13h13
  2. Réponses: 5
    Dernier message: 05/02/2010, 15h36
  3. débutant recherche aide pour envoi formulaire
    Par peytona dans le forum Flash
    Réponses: 1
    Dernier message: 08/06/2007, 06h20
  4. Impression du formulaire de recherche de Loufab
    Par Math_eti dans le forum Access
    Réponses: 4
    Dernier message: 14/09/2006, 20h02
  5. impression d'une recherche sur formulaire
    Par lucie31 dans le forum Access
    Réponses: 4
    Dernier message: 25/04/2006, 15h24

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