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 :

Exécution d'une macro par un lien hypertexte.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut Exécution d'une macro par un lien hypertexte.
    Bonjour,

    Je dispose d'un fichier prospects avec de nombreuses données renseignées dans les colonnes (je joints ici un fichier simplifié).
    Lors de séances d'appels, je souhaiterais, en cliquant simplement sur le lien hypertexte situé sur le nom du prospect (colonne A de la feuille "Base"), pouvoir incrémenter automatiquement la fiche de synthèse que j'ai créée (feuille "Fiche"), avec les données de ma feuille "Base" à reporter dans les cellules A3 (nom), F3 (Tel), C5 (Siren), C6 (Chiffre d'affaires), et C7 (Date du CA).
    Si quelqu'un a une solution pour également sauvegarder automatiquement chaque nouvelle fiche créée dans une nouvelle feuille (en la nommant avec le nom du prospect), avec possibilité d'impression avec le même bouton que j'ai inséré sur la fiche...
    Je joint un fichier simplifié (qui comporte uniquement la macro d'impression avec des ' ).

    Fichier_Prospects.xlsx

    D'avance merci.
    Cordialement.

  2. #2
    Membre très actif Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Par défaut
    Bonsoir Janigrel,
    J'ai remarqué que les liens hypertextes dans votre feuille "Base" pointent tous vers la même cible Càd la Cellule A1 de la feuille "Fiche", si cela est intentionnel et que vous voulez simplement activer la feuille fiche au même temps que vous mettez vos données à jours en fonction du nom que vous sélectionnez, je vous propose le code qui suit que vous allez devoir insérer dans la feuille "Base"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 And Target.Hyperlinks.Count Then
    Sheets("Fiche").Range("A3").Value = Target.Value
    Sheets("Fiche").Range("F3").Value = Target.Offset(0, 8).Value
    Sheets("Fiche").Range("C5").Value = Target.Offset(0, 1).Value
    Sheets("Fiche").Range("C6").Value = Target.Offset(0, 3).Value
    Sheets("Fiche").Range("C7").Value = Target.Offset(0, 4).Value
    End If
    End Sub
    N.B: J'ai bien essayer d'utiliser l'argument Target de l’événement Worksheet_FollowHyperlink, mais cela n'a pas marché du moment que tous les liens sont identiques et que dans ce cas seul la toute première cellule comportant ce lien serait prise en considération par la procédure..

    Ce que fait le code est le suivant:

    - Vérifie que la cellule sélectionnée est dans la colonne "A".
    - Vérifie si la cellule sélectionnée possède un lien hypertexte.
    - Reporte les données de la personne sélectionnée dans la feuille "Fiche"

    En ce qui concerne la deuxieme partie de votre poste.
    (en la nommant avec le nom du prospect)
    Qu'entendez vous par le nom du prospect? autrement dit comment voulez vous nommer vos prospects en se basant sur les données que vous avez?
    Cordialement
    Karim
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  3. #3
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Bonsoir Karim,
    Tout d'abord merci pour votre précieuse aide.
    Dans mon fichier, effectivement, j'avais déjà mis le lien hypertexte sur les noms (colonne A) pour renvoyer à la feuille "Fiche".
    Quant à votre code => impeccable ! !
    Ce que j'entends dans la 2ème partie de mon post, c'est, une fois que les données sont reportées dans la fiche en cliquant sur le nom du prospect, de sauvegarder cette fiche sur une nouvelle feuille nommée par exemple "Fiche_DURAND"., ou mieux, dans un nouveau classeur (une nouvelle feuille à chaque fiche).

    Merci encore. Si vous pouvez m'aider pour le 2ème point, c'est bien volontiers...
    Cordialement.

  4. #4
    Membre très actif Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Par défaut
    Insérez la procédure suivante dans votre module, puis attribuer la macro à votre bouton.
    Veuillez Consultez les commentaires dans 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
    Sub PublierRapport()
    Dim sht As Worksheet
    Application.ScreenUpdating = False
     
    'Ajoute une nouvelle feuille dans le fichier en derniére position
    ThisWorkbook.Sheets.Add After:=Sheets(ThisWorkbook.Sheets.Count)
    'Attribue un nom à la nouvelle feuille selon vos critéres "Fiche NomPersonne"
    Sheets(ThisWorkbook.Worksheets.Count).Name = "Fiche " & Sheets("Fiche").Range("A3").Value
     
     
    'Copie de la plage A1:G100 de la fiche vers la nouvelle Feuille" A1:G100 est juste un exemple
    'Puis colle dans la nouvelle feuille
    Sheets("Fiche").Range("A1:g100").Copy
    Sheets(ThisWorkbook.Sheets.Count).Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = xlNone
     
    'Ajuste la colonne G de la nouvelle feuille avant d'exporter vers le format PDF:
    Sheets(ThisWorkbook.Sheets.Count).Columns("G").ColumnWidth = 15
     
    'Export de la feuille sous format PDF vers le chemin C:\NomDelafeuille_DateDuJour.pdf : Ceci est Juste un exemple
     
    Sheets(ThisWorkbook.Sheets.Count).ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\" & Sheets(ThisWorkbook.Sheets.Count).Name & "_" & Date & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
     
    End Sub
    NB: Je vous conseille de paramétrer votre bouton pour que celui-ci n'apparaisse pas dans le fichier PDF, enfin si vous le souhaitez
    - Décochez la case de la propriété: Objet Imprimable

    J'utilise une version anglaise de MS Office donc le titre de la propriété peut être différent.

    Cordialement.
    Karim
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  5. #5
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Merci Karim,

    J'ai fait comme vous l'avez décrit. La nouvelle fiche se crée bien dans le même classeur.
    Seulement, j'ai un message d'erreur pour le PdF : "erreur d'exécution '1004' : Document non enregistré. Le document est peut-être ouvert et une erreur s'est produite lors de l'enregistrement". Je ne sais de quoi ça vient.

    N'y avait-il pas possibilité, quand on clique sur le nom dans la base, que la fiche qui apparaît grâce à votre 1er code, soit enregistrée non pas dans le même classeur, ni dans un PdF, mais dans un nouveau classeur à nommer par exemple "Classeur_Fiches" sous un répertoire C:\... (une feuille par nouvelle fiche)...
    Merci encore pour le temps que vous consacrez à mon problème, je débute en Macro (il y a 2 mois je savais tout juste faire une addition sous Excel...).

    A bientôt.

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    si tu veux integrer tes données dans un nouveau classeur, n'hésites pas à utiliser l'enregistreur de macros qui te donneras un code que tu pourras nettoyer, le code nettoyé pourrait donner ceci, à adapter bien sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro2()
    Dim Plage
    Plage = ThisWorkbook.Sheets("Fiche").Range("A1:G100")
    Workbooks.Add
    'ci-dessous, adapter le chemin, le nom du classeur et voire le nom de la feuille
    ActiveWorkbook.Sheets("Feuil1").Range("A1").Resize(UBound(Plage, 1), UBound(Plage, 2)) = Plage
    Sheets("Feuil1").Name = "toto"
    ActiveWorkbook.SaveAs Filename:="C:\Users\DOMINIQUE\Desktop\agerber.xlsm", _
            FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre très actif Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Par défaut
    Bonjour Janigrel, Bonjour DOM,
    Janigrel, L'erreur d’exécution 1004 est certainement due au fait que vous ayez tenter de publier une fiche pour la même personne dans le même jour dans le même dossier, autrement dit vous tentez de créer un fichier sous un nom d'un autre fichier qui existe déjà dans le dossier, puisque l'appellation de la nouvelle fiche dans mon exemple se porte sur le nom de la personne et la date du jour.
    Et l'exemple de DOM n’échapperait pas à cette erreur non plus, puisque l'erreur n'a pas été gérée dans les deux codes.

    En penchant vers votre préférence de sauvegarder la fiche sous un fichier excel, essayez d'adapter le code qui suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub PublierRapport()
    On Error GoTo err
    Application.ScreenUpdating = False
    Sheets("Fiche").Range("A1:g100").Copy
    Workbooks.Add
    ActiveWorkbook.Sheets(1).Name = "Fiche " & ThisWorkbook.Sheets("Fiche").Range("A3").Value
    ActiveWorkbook.Sheets(1).Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = xlNone
    ActiveWorkbook.SaveAs Filename:="C:\Fiche " & ThisWorkbook.Sheets("Fiche").Range("A3").Value & "_" & Date & ".xlsx"
    MsgBox "Nouvelle fiche créée et sauvegardée.", vbInformation
    err: Exit Sub
    End Sub
    NB: Dans cette approche, si un fichier sous le même nom existe déjà, Excel vous inviterait à choisir entre écraser la dernière version de votre fiche ou de refuser puis de la sauvegarder manuellement sous un autre nom.

    Cordialement.
    Karim
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  8. #8
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Bonjour, et merci pour le dernier post.
    Le nouveau classeur ne s'enregistre pas non plus.
    J'essaie de faire des tests, de comprendre, et vous reviens.
    Cdt.

  9. #9
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Je vous reviens suite à mon dernier message.

    Le fichier s'ouvre bien... et j'en avais effectivement un ouvert au même nom...

    Je vais tenter de perfectionner le code pour :
    - que le classeur de destination conserve la mise en forme de ma fiche (largeur colonne notamment) : que faut-il rajouter?
    - que chaque nouvelle fiche créée dans le 1er classeur puisse être enregistrée dans une nouvelle feuille du classeur de destination...
    Merci à vous.

Discussions similaires

  1. [XL-2010] Reprise d'une macro 1 après exécution d'une macro 2 appelée par la macro 1
    Par julio44 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/07/2014, 12h32
  2. [Débutant] Récupérer une valeur par un lien hypertexte
    Par jyves47 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/01/2014, 18h23
  3. Réponses: 8
    Dernier message: 16/01/2014, 04h52
  4. [XL-2010] Macro copier des liens hypertexte sur une colonne
    Par zaza45 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 04/06/2013, 15h30
  5. [Système] Remplacer une chaine par un lien hypertexte
    Par Bisûnûrs dans le forum Langage
    Réponses: 10
    Dernier message: 06/06/2007, 09h34

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