none
Envoie mail d'un seul onglet d'un classeur mis en forme au format pdf RRS feed

  • Question

  • Bonjour,

    Je suis sur un environnement Excel 2007 et bientôt 2010, J'ai créé un document Excel DEVIS qui gère de nombreux calcul et formule automatique avec des fonction recherche entre deux feuilles de ce même calcul.

    Cette 1ere feuille "DEVIS" avec des macros est mises en forme plus bas dans les lignes grace à des sauts de page afin de pouvoir imprimer ce dont j'ai besoin.

    En feuille deux j'ai une base de donnée que je souhaite concerver sur ce classeur. Elle me sert dans la feuille 1, il s'agit de mes références d'article et désignations qui se renseigne automatiquement avec la saisie d'un code article de la colonne A de la feuille 1 (RECHERCHEV).

    Mes problèmes :

    1 hauteur des lignes : lorsque je saisie les codes de mes articles, et que les désignations sont renseignés automatiquement d'aprés la feuille 2, les lignes ne se mettent pas en forme correctement (hauteur des lignes) à chaque saisie je n'arrive pas à règler se problème et je suis obliger de faire une macro en fin de saisie de toute mes lignes mais je suis obliger de reprendre manuellement mon devis.

    2 je souhaite envoyer par mail (piéce jointe) ma feuille 1 et pas le classeur entier au format PDF avec en Objet le titre du classeur et en ("à") une cellule bien précise où j'ai renseigné le mail de mon client. dans Excel la fonctionnalité Envoyer par mail au format PDF envoi le classeur entier et je n'arrive à paramétrer une seul feuille (la 1).

    Merci si quelqu'un peu m'aider.


    Phimony

    lundi 9 juillet 2012 07:45

Toutes les réponses

  • Bonjour,
    1. Si tu récupères les informations de Feuill 2 avec des formules,
    effectivement, tu ne récupères que les valeurs. Donc le formatage n'est
    pas récupéré.
    "mais je suis obliger de reprendre manuellement mon devis"
     
    ? Est-ce que tu peux expliciter ?
     
    2. il faut créer un nouveau classeur à partir de la feuille à expédier
    et l'enregistrer au format pdf avant de l'envoyer. Tout ceci peut être
    fait par macro. Si tu veux de l'aide pour le faire, indique quel est
    ton client de messagerie.
    Cordialement.
    Daniel
     
     
     
    lundi 9 juillet 2012 08:03
  • Bonjour Daniel,

    merci à vous d'être de nouveau avec moi pour mes améliorations et problèmes.

    1- la formule utilisée est simple (      =SI($A91="";"";RECHERCHEV($A91;produits!$A$1:$E$6857;2;FAUX))      ) et "PRODUIT étant le nom de ma feuille.

    J'ai donc fais un bouton où j'ai réalisé une macro à qui j'ai affecté une macro qui exécute un ajustement des lignes.

    Voici ma macro:

    Sub ajuster_les_lignes()
    '
    ' ajuster_les_lignes Macro
    ' Macro enregistrée

    '

    '
        ActiveWindow.SmallScroll Down:=12
        Range("B65").Select
        ActiveWindow.SmallScroll Down:=144
        Range("B65:D200").Select
        ActiveWindow.SmallScroll Down:=-99
        Selection.Rows.AutoFit
        ActiveWindow.SmallScroll Down:=-6
        Range("B63").Select
    End Sub

    malheureusement celle-ci me permet pas d'être automatisé à chaque saisie de ligne(ce que je souhaite) et je dois tout de même reprendre ligne par ligne pour vérifier l'ajustement car quelque fois ce n'est pas correct.

    2- le mail de client bien entendu changera en fonction du devis que je taperai mais son adresse de messagerie et tapé en "B17" ou répété en "C58" afin d'apparaitre sur le DEVIS et le devis lui commence en ligne 42.

    le nom du client lui est inscrit en "B9" et repris en "C53" comme pour l'adresse de messagerie.

    merci beaucoup pour ton aide encore une fois.


    Phimony

    lundi 9 juillet 2012 08:24
  • Peux-tu mettre un classeur sur cjoint.com et poster ici le lien généré
    (sans données confidentielles) afin que je voie les hauteurs de ligne à
    ajuster. Quel est ton logiciel de messagerie ? Outlook ?
    Daniel
     
     
     
    lundi 9 juillet 2012 09:05
  • Bonjour, Daniel,

    Je suis sous Yahoo mail, et je ne sais pas ce qu'est cjoint.com et donc je ne sais pas comment te joindre un exemple de mon fichier ni te donner un lien.

    Par contre sur ma précédente demande (INSERTION D'IMAGE AUTOMATIQUE) où tu m'avais aidé, le programme et les problèmes rencontrés ont été tous résolus graçe à toi merci. Malheureusement je ne peux pas insérer de ligne sans qu'un message erreur "13" incompatibilité type me soit envoyé et m'ouvre la macro "d'insertion d'image" à sa première ligne, peut tu me dire également comment faire pour éviter cela et insérer des lignes (cela viens de ce produire)?


    Phimony

    mardi 10 juillet 2012 11:29
  • Bonjour,

    1. entre dans la barre d'adresse de ton navigateur internet : cjoint.com. Clique sur le bouton "Choisissez un fichier" et choisis ton fichier. Clique sur "Créer le lien Cjoint" et copie le lien généré. Poste le ici.

    2. Pour l'insertion d'image, peux-tu poster le code, j'ai complètement oublié de quoi il s'agît.

    Daniel

    mardi 10 juillet 2012 12:11
  • Bonjour,

    1. http://cjoint.com/?BGkoTcxSf8k voici le lien j'espère que tous va marché.

    2. pour l'insertion d'image voici le code:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 2 And Target.Value <> "" Then
            With ActiveSheet
                On Error Resume Next
                ActiveSheet.Shapes("IMG" & Target.Row & Target.Column).Delete
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".gif" _
                    , msoFalse, msoTrue, Target.Offset(, 0).Left, Target.Offset(, 0).Top, 400, 130
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".jpg" _
                    , msoFalse, msoTrue, Target.Offset(, 0).Left, Target.Offset(, 0).Top, 400, 130
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".png" _
                    , msoFalse, msoTrue, Target.Offset(, 0).Left, Target.Offset(, 0).Top, 400, 130
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".bmp" _
                    , msoFalse, msoTrue, Target.Offset(, 0).Left, Target.Offset(, 0).Top, 400, 130
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".png" _
                    , msoFalse, msoTrue, Target.Offset(, 0).Left, Target.Offset(, 0).Top, 400, 130
                ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name = "IMG" & Target.Row & Target.Column
            End With
        End If
    End Sub

    lorsque je veux insérer une ligne cela me fais un code erreur 13, incompatibilité de type et lorsque que je click sur débogueur il va sur la ligne gras ci-dessus

    sinon tous fonction trés bien par rapport à ce que vous m'avez fais la derniére fois. il s'agit du même fichier que vous avez.


    Phimony

    mardi 10 juillet 2012 12:50
  • Pour le ppoin 1, remplace la macro du module de la feuille DEVIS par
    celui-ci :
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 And Target.Value <> "" Then
    With ActiveSheet
    On Error Resume Next
    ActiveSheet.Shapes("IMG" & Target.Row &
    Target.Column).Delete
    ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD
    Philippe\Pictures\" & Target.Value & ".gif" _
    , msoFalse, msoTrue, Target.Offset(, 0).Left,
    Target.Offset(, 0).Top, 400, 130
    ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name = "IMG" &
    Target.Row & Target.Column
    End With
    ElseIf Target.Column = 1 And Target.Value <> "" Then
    Target.EntireRow.AutoFit
    End If
    End Sub
     
    Les hauteurs de ligne s'ajusteront à chaque fois que entreras un code
    en colonne A.
     
    Daniel
     
     
     
    mercredi 11 juillet 2012 12:53
  • Pour le point 2 :
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 2 And Target.Value <> "" Then
    With ActiveSheet
    On Error Resume Next
    ActiveSheet.Shapes("IMG" & Target.Row &
    Target.Column).Delete
    ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD
    Philippe\Pictures\" & Target.Value & ".gif" _
    , msoFalse, msoTrue, Target.Offset(, 0).Left,
    Target.Offset(, 0).Top, 400, 130
    ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD
    Philippe\Pictures\" & Target.Value & ".jpg" _
    , msoFalse, msoTrue, Target.Offset(, 0).Left,
    Target.Offset(, 0).Top, 400, 130
    ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD
    Philippe\Pictures\" & Target.Value & ".png" _
    , msoFalse, msoTrue, Target.Offset(, 0).Left,
    Target.Offset(, 0).Top, 400, 130
    ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD
    Philippe\Pictures\" & Target.Value & ".bmp" _
    , msoFalse, msoTrue, Target.Offset(, 0).Left,
    Target.Offset(, 0).Top, 400, 130
    ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD
    Philippe\Pictures\" & Target.Value & ".png" _
    , msoFalse, msoTrue, Target.Offset(, 0).Left,
    Target.Offset(, 0).Top, 400, 130
    ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name = "IMG" &
    Target.Row & Target.Column
    End With
    End If
     
    Daniel
     
     
     
    mercredi 11 juillet 2012 13:01
  • Bonjour daniel,

    Merci tout fonctionne je reste dans l'envie de pouvoir rendre service à nouveau. et j'espère resoudre mon probleme d'envoi par mail en PDF de ce devis.

    merci à vous.


    Phimony

    mercredi 11 juillet 2012 14:33
  • Bonjour daniel,

    savez vous comment supprimer mon document de cjoint.com afin qu'il ne reste pas sur un site internet?


    Phimony

    mercredi 11 juillet 2012 14:37
  • Ce n'est pas possible. Il restera 4, 21 ou 60 jours après la dernière
    consultation si tu as choisi "illimité" (durée par défaut). C'est
    pourquoi il ne faut pas télécharger de fichier avec des données
    réelles. Pour ton envoi par mail, si tu ne dispose pas de logiciel de
    messagerie et quel est-il ? il faut que tu aies un compte de messagerie
    SMTP. Normalement, ton administrateur réseau, si tu es en entreprise ou
    ton fournisseur d'accès internet a dû t'en communiquer un.
    Communique-moi les réponses STP.
    Daniel
     
     
     
    mercredi 11 juillet 2012 15:30
  • Bonjour Daniel,

    J'ai contacté le webmaster afin de retirer mon fichier de la base de cjoint et il devrai m'aider comme il me là écrit, c'est plutôt sympatique je trouve pour un amateur comme moi qui fais beaucoup trop de bétises en allant trop vite sur info.

    ensuite je navig sur outlook, mais mon seul souci est que lorsque j'utilise l'outil "envoi au format pdf" il joint un PDF avec 3 feuilles:

    -


    Phimony

    jeudi 12 juillet 2012 06:54
  • rebonjour:

    les 3 feuilles sont:

    1ere et seconde feuille: le devis car il fais 2 feuilles à ce moment là (il peut évidemment faire plus si j'ai plus de lignes),

    trosième feuille: elle est blanche ou vierge est je présume qu'il s'agit de l'onglet "produit" de mon classeur car lorsque je paramètre ma zone d'impression de cet onglet sur une cellule vierge cette feuille est vierge sinon dans le cas où je ne paramètre rien avec ma zone d'impression j'ai beaucoup plus de page en PDF, car il me met tous l'onglet "produit" du moins les données présentes.

    je ne souhaite envoyé en PDF que le devis encadré par les sauts de page. ensuite si le destinataire (le client cité en dessus de la zone "saut de page", et l'objet: le titre du document ne sont pas cité et bien dommage. mais ce serai un plus pour le gain de temps,

    LE BUT:lorsque je fais un devis client, alors je click sur un bouton où j'affecte une macro " celle dont on parle" et le devis est est généré en PDF dans ma boite mail avec le mail du client en destinataire et le titre du devis en objet.


    Phimony

    jeudi 12 juillet 2012 07:04
  • Bonjour daniel,

    Je suis désolé de revenir sur lecode d'avant mais serait il possible (pour une question de pratique) de saisir mes données de mon devis: les articles et  les noms des images dans la même colonne A (surligné), avec un décalage de l'image de une colonne (mis en gras) car là je suis obligé de la faire en B et je me rend compte que ce m'est pas pratique et en changeant le 2 en 1  le l'ajustement ne marche pas?

    Voici le code actuel:

    Private Sub Worksheet_Change(ByVal Target As Range)
           If Target.Count > 1 Then Exit Sub
           If Target.Column = 2 And Target.Value <> "" Then
           With ActiveSheet
                On Error Resume Next
                ActiveSheet.Shapes("IMG" & Target.Row & Target.Column).Delete
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".gif" _
                    , msoFalse, msoTrue, Target.Offset(, 1).Left, Target.Offset(, 0).Top, 520, 130
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".jpg" _
                    , msoFalse, msoTrue, Target.Offset(, 1).Left, Target.Offset(, 0).Top, 520, 130
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".png" _
                    , msoFalse, msoTrue, Target.Offset(, 1).Left, Target.Offset(, 0).Top, 520, 130
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".bmp" _
                    , msoFalse, msoTrue, Target.Offset(, 1).Left, Target.Offset(, 0).Top, 520, 130
                ActiveSheet.Shapes.AddPicture "C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".png" _
                    , msoFalse, msoTrue, Target.Offset(, 1).Left, Target.Offset(, 0).Top, 520, 130
                ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name = "IMG" & Target.Row & Target.Column
            End With
            ElseIf Target.Column = 1 And Target.Value <> "" Then Target.EntireRow.AutoFit
            End If
    End Sub


    Phimony

    jeudi 12 juillet 2012 07:59
  • Attache la macro suivante à un bouton. Le mail est affiché à l'écran. Quand ce sera OK, mais la commande "Display" en commentaire et dé-commente la commande "Send".

    Daniel

    jeudi 12 juillet 2012 08:14
  • " les articles et  les noms des images dans la même colonne A"

    Si tu saisis tout dans la colonne A, comment est-ce que je sais ce qui est un article et ce qui est un nom d'image ? à moins que tu précises l'extension du fichier ? Est-ce que tu veux les images en colonne C ?

    jeudi 12 juillet 2012 08:49
  • Bonjour Daniel,

    Les articles saisient dans la colonne A sont par exemple "1202" et sa photo (qui est recherché dans un dossier à part sous un nom bien spécifique)  sera donc en relation avec ce code "p1202" : son nom dans le dossier respectif de photo (conformément au nom de la photo).

    Pour une saisie plus rapide et donc plus fonctionnel je souhaite effectuer les saisies des codes articles  et celles des photos dans la même colonne. la photo s'affiche en colonne B car je décale dans la macro de 1 sont affichage comme suit:

    ActiveSheet.Shapes.AddPicture "C:\Users\chemin d'accés\" & Target.Value & ".gif" _
                    , msoFalse, msoTrue, Target.Offset(, 1).Left, Target.Offset(, 0).Top, 520, 130

    J'ai une autre question est-ce possible de ne pas spécifier le format (520,130) de la photo afin de ne pas déformer la photo d'origine?

    merci pour ton aide


    Phimony

    mercredi 18 juillet 2012 06:58
  • Bonjour,

    J'ai modifié la macro comme suit. Le format est obligatoire avec AddPicture. Puisque tu es avec XL2007, j'ai utilisé "Picture". A toi de régler les dimensions en remplaçant "100" par ce que tu veux.

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim P As Picture
        If Target.Column = 1 And Target.Value <> "" Then
            With ActiveSheet
                On Error Resume Next
                Set P = .Pictures.Insert("C:\Users\GUERARD Philippe\Pictures\" & Target.Value & ".gif")
                'Set P = .Pictures.Insert("C:\Users\Daniel\Pictures\" & Target.Value & ".jpg")
                coef = P.Width / P.Height
                P.Top = Target.Offset(, 1).Top
                P.Left = Target.Offset(, 1).Left
                P.Width = 100 * coef
                P.Height = 100
            End With
        ElseIf Target.Column = 1 And Target.Value <> "" Then
            Target.EntireRow.AutoFit
        End If
    End Sub

    Daniel

    mercredi 18 juillet 2012 09:45
  • Bonjour,

    Effectivement tout fonctionne bien avec cette macro. J'ai dû modifier tout de même "ElseIf" par "If" car l'ajustement ne fonctionner pas sans cela. Maintenant tout fonctionne, il ne me reste qu'a faire vivre pour voir si avec de nombreuses saisies tout va bien. merci à toi.

    PB:Néanmoins, de tant à autres j'ai des images qui s'effacent ou ne s'affiche plus, je ne sais pas pourquoi de temps à autres. et je n'est pas d'explication.

    Est-ce à  causes des macros que nous avons crées ensembles ou est ce un problème de paramètre de Excel ou bien encore de l'ordinateur? Ce problème n'est pas systèmatique et arrive sur des images variées. aurez vous une explication ou de quoi me faire avancer sur ce problème?

    Lorsque que je saisie des entrée de code puis d'insertion d'image (soit avec la macro (anciennement ou avec la nouvelle ou bien encore avec un simple copié coller) et que je descent vers le bas de ma page et que je remonte quelque fois les images ne sont plus là.

    ENCORE MERCI POUR CETTE MACRO CAR TOUT FONCTIONNE MALGRE CE SOUCI D'IMAGE QUI DISPARAIT.

    Je reste malgré tous en attente d'une solution pour mon souci du second onglet qui est incorporé dans l'envoi en PDF par mail de la fonctionnalité "Envoi par mail en PDF" de Excel", j'aimerai vraiment trouver une solution pour envoyer que l'onglet "devis" en PDF par mail. il est certainement possible de paramétrer cette fonctionnalité mais je ne sais pas comment.

    Merci encore à vous Daniel


    Phimony

    vendredi 20 juillet 2012 06:45