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 :

lien hypertexte ça bug [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut lien hypertexte ça bug
    Bonjour à toutes et à tous,

    Je n'arrive pas à écrire un bout de code pour créer un lien hypertexte
    e suis allé voir les faqs et j'ai fait une recherche sur le forum j'ai essayé de ré appliquer ce que j'y ai vu en fonction de mon cas mais ça veut pas...

    J'explique mon Pb. J'ai un devis que j'enregistre dans un répertoire windows, et en plus j'archive quelques éléments de ce devis (NumFact, Date de fact,etc...)sur un classeur excel(Devisprovisoire.xlsx, feuille DP!).

    J'essaye de faire en sorte qu'a chaque sauvegarde un lien hypertexte se créé automatiquement du NumFact colonne A de la feuille archivée DP au devis enregistré dans windows

    Voici le code que j'ai écrit et évidemment il ne marche pas si un oeil expert pouvait m'aiguiller merci d'avance.
    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
    Sub Hyperlink()
     
    Dim Rep As String, NumFact As String, Client As String
    Dim Macible As String
    Dim filename As String
    Dim objLink As Hyperlink
     
    Application.ScreenUpdating = False
    'Initialisation variables
    Rep = Worksheets("Menu").Range("C9").Value
    With Worksheets("Devis")
        NumFact = .Range("F19").Value
        Client = .Range("J13").Value
    End With
    Set filename = Rep & NumFact & " " & Client & ".xls"
    Set address = filename
    Set Macible = Columns(1).Find(What:=NumFact, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
    Set objLink = ActiveSheet.Hyperlinks.Add(Macible, objLink.address)
    With objLink
    objLink.address = filename
    Follow NewWindow:=True
    End With
     
    End Sub
    J'obtiens une erreur qui me dit qu'il ne reconnait pas l'objet filename. mais ça ne me parle pas beaucoup...
    je mets le code de sauvegarde dans lequel cette macro doit être intégrée et le classeur d'archivage dans lequel se situe le NumFact lien permettant d'ouvrir le devis sauvegardé.
    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
    Sub A_Devis()
     
    Dim Rep As String, NumFact As String, Client As String, Tb() As String
    Dim Sh As Worksheet
    Dim j As Byte
     
    Application.ScreenUpdating = False
    'Initialisation variables
    Rep = Worksheets("Menu").Range("C9").Value
    With Worksheets("Devis")
        NumFact = .Range("F19").Value
        Client = .Range("J13").Value
    End With
     
    'Recherche des feuilles à enregistrer
    ReDim Tb(0)
    Tb(0) = "Devis"
    For Each Sh In ThisWorkbook.Worksheets
        If InStr(Sh.Name, "Détail") > 0 Then
            j = j + 1
            ReDim Preserve Tb(0 To j)
            Tb(j) = Sh.Name
        End If
    Next Sh
     
    'enregistrement des feuilles trouvées
    Worksheets(Tb).Copy
    With ActiveWorkbook
        For Each Sh In .Worksheets
            Sh.UsedRange.Value = Sh.UsedRange.Value
        Next Sh
        Application.DisplayAlerts = False
        .SaveAs filename:=Rep & NumFact & " " & Client & ".xls", FileFormat:=xlExcel8
        .Close False
        Application.DisplayAlerts = True
     
     
        'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    'Range("J10").Value = "Duplicata Devis"
     
    'ActiveWindow.SelectedSheets.PrintOut Copies:=Nb_Ex - 1, Collate:=True
    'Range("K10").Value = "Devis"
     
    End With
     
    Call A_infosdevis
     
    ThisWorkbook.Activate
     
        Sheets("Menu").Activate
        Range("C10").Value = Range("C10").Value + 1
     
     
     
    MsgBox "Le devis n° " & Num_Fact & vbCrLf & " pour le client " & Nom_client & vbCrLf & " a bien été archivé.", vbInformation + vbOKOnly, "Archivage devis"
     
     
    End Sub
     
    Sub A_infosdevis()
     
    Num_Fact = Range("F19").Value
        Date_Fact = Range("L5").Value
            Nom_client = Range("J13").Value
                Montant_DevisHT = Range("M57").Value
                    Montant_DevisTTC = Range("M59").Value
                    Indice_Devis = Range("G19").Value
     
    Application.Workbooks.Open "f:\Atest\Devisprovisoire.xlsx"
     
    Sheets("DP").Activate
        Range("A1").Select
    If Range("A2").Value <> "" Then ActiveCell.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
     
            ActiveCell.Value = Num_Fact
          ActiveCell.Offset(0, 1).Value = Date_Fact
          ActiveCell.Offset(0, 2).Value = Nom_client
          ActiveCell.Offset(0, 3).Value = Indice_Devis
          ActiveCell.Offset(0, 4).Value = Montant_DevisHT
          ActiveCell.Offset(0, 5).Value = Montant_DevisTTC
     
    Call Hyperlink
     
    ActiveWorkbook.Saved = False
     
    ActiveWorkbook.Close
     
     
    End Sub[ATTACH]85408[/ATTACH]

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    filename étant un string, tu ne dois pas mettre de set lors de l'affectation

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut ok
    Merci
    J'ai pris en compte le conseil... Cependant j'ai un autre problème avec la variable Macible il me dit qu'il ne reconnait pas columns()? y a t il un moyen de corriger ça? Je sens que je me rapproche du but... ou 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
    17
    18
    19
    20
    21
    22
    Sub Hyperlink()
     Dim Rep As String, NumFact As String, Client As String
    Dim Macible As String
    Dim filename As String
    Dim objLink As Hyperlink 
    Application.ScreenUpdating = False
    'Initialisation variables
    Rep = Worksheets("Menu").Range("C9").Value
    With Worksheets("Devis")
        NumFact = .Range("F19").Value
        Client = .Range("J13").Value
    End With
     filename = Rep & NumFact & " " & Client & ".xls"
     
    Macible = Columns(1).Find(What:="NumFact", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
    Set objLink = ActiveSheet.Hyperlinks.Add(Macible, objLink.Address)
    With objLink
    objLink.Address = filename
    End With
     
    End Sub
    parce qu'en fait j'aimerai qu'il trouve le NumFact dans la colonne 1 de la feuille DP! pour créer le lien hypertexte . Je ne sais pas si c'est la bonne méthode ça m a semblé logique...

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Essaie en enlevant les guillemets sur NumFact

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut
    Bonjour Zebrelou merci de m'aider,

    j'ai essayé sans les guillemets sur NumFact dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Macible = Columns(1).Find(What:=NumFact, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns,
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
    mais ça ne change rien, il me dit erreur de compilation, erreur de syntaxe sur cette ligne.
    Je vais essayer de bidouiller un truc avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.End(xlDown).Select
    Je viens d'essayer un autre truc ça ne marche pas non plus ...
    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
    Sub Hyperlink()
     
    Dim Rep As String, NumFact As String, Client As String
    Dim Macible As String
    Dim filename As String
    Dim objLink As Hyperlink
     
    Application.ScreenUpdating = False
    'Initialisation variables
     
    'Workbooks("Modèle devis vba").Activate
    ThisWorkbook.Activate
    With Worksheets("Devis")
    Rep = Worksheets("Menu").Range("C9").Value
        NumFact = .Range("F19").Value
        Client = .Range("J13").Value
    End With
     filename = Rep & NumFact & " " & Client & ".xls"
     
     Workbooks("Devisprovisoire").Activate
        Sheets("DP").Activate
    Range("A1").Select
    If Range("A2").Value <> "" Then ActiveCell.End(xlDown).Select
    'Macible = Columns(1).Find(What:="NumFact", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
    Macible = ActiveCell.Value
    Set objLink = ActiveSheet.Hyperlinks.Add(Macible, objLink.Address)
    With objLink
    objLink.Address = filename
     
    End With 
    End Sub
    Il n'aime pas le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Devisprovisoire").Activate
    entre autre...Il y a aussi un moment dans l'archivage excel me demande si je veux modifier les liaisons ou continuer cela joue t il un rôle dans la création de lien hypertexte?

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Find te renvoie un objet Range. MaCible doit donc être déclaré comme range et cette fois il te faudra un set.

    Voici un code qui devrait marcher. Il faut bien vérifier que ton chemin en C9 se termine bien par "\".

    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
    Sub Hyperlink()
     
    Dim Rep As String, NumFact As String, Client As String
    Dim Macible As Range
    Dim filename As String
     
    Application.ScreenUpdating = False
    'Initialisation variables
    Rep = Worksheets("Menu").Range("C9").Value
    With Worksheets("Devis")
        NumFact = .Range("F19").Value
        Client = .Range("J13").Value
    End With
     filename = Rep & NumFact & " " & Client & ".xls"
     
    set Macible = Columns("A:A").Find(What:=NumFact, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
    ActiveSheet.Hyperlinks.Add Macible, filename
     
     
    End Sub

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut Rebonjour
    Re-merci Zebreloup pour ton soutien

    Tout d'abord la cellule "C9" se termine bien par "\".

    Ensuite J'ai essayé le code mais le débogage révèle une erreur '9' (indice n'appartient pas à la sélection.) à ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rep = Worksheets("Menu").Range("C9").Value
    Du coup j'ai changé un peu le code j'ai essayé avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ThisWorkbook.Activate
    With Worksheets("Devis")
    Rep = Worksheets("Menu").Range("C9").Value
        NumFact = .Range("F19").Value
        Client = .Range("J13").Value
    End With
     filename = Rep & NumFact & " " & Client & ".xls" etc.
    Là il j'ai une "incompatibilité de type" "erreur deexécution '13' :"
    sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Macible = Columns("A:A").Find(What:=NumFact, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
    J'ai donc rechangé le code et ajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Workbooks("Devisprovisoire").Activate
    Worksheets("DP").Activate
     
    Set Macible = Columns("A:A").Find(What:=NumFact, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
    ActiveSheet.Hyperlinks.Add Macible, filename
    Et encore une fois il me dit erreur '9' (indice n'appartient pas à la sélection.)sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Devisprovisoire").Activate
    Je signale qu'à chaque fois pendant la macro j'ai un avertissement qui me dit :
    "Ce classeur contient une ou plusieurs liaisons qui ne peuvent pas être mis à jour" et me demande de continuer ou de modifier les liaisons. je sais pas si c'est normal je clique sur continuer (peut être parce ce que j'enregistre des feuilles comprenant des macro dans un autre classeur.)

    Cette macro c'est mon mirage quand je crois l'avoir atteint elle s'éloigne ou disparaît

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut C'est bon
    ok ça y est, je poste le code corrigé pour ceux qui en auraient besoin et merci encore à toi zebreloup pour ton aide.

    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
    Sub Hyperlink()
     
    Dim Rep As String, NumFact As String, Client As String
    Dim Macible As Range
    Dim filename As String
    Dim objLink As Hyperlink
    Dim wb As Workbook
     
    Application.ScreenUpdating = False
    'Initialisation variables
     
    ThisWorkbook.Activate
    With Worksheets("Devis")
    Rep = Worksheets("Menu").Range("C9").Value
        NumFact = .Range("F19").Value
        Client = .Range("J13").Value
    End With
     filename = Rep & NumFact & " " & Client & ".xls"
     
    Set wb = Workbooks("Devisprovisoire.xlsx")
    wb.Activate
    Worksheets("DP").Activate
     
    Set Macible = Columns("A:A").Find(What:=NumFact, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
    ActiveSheet.Hyperlinks.Add Macible, filename
     
     
    End Sub
    Là ça marche yeepee

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

Discussions similaires

  1. Lien hypertexte dans swf bug etrange
    Par BoloG dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 23/07/2009, 20h57
  2. [FLASH 5] Comment créer un lien hypertexte
    Par ajit dans le forum Flash
    Réponses: 4
    Dernier message: 30/03/2006, 12h26
  3. Liens Hypertexte simple comme en HTML ?!
    Par oazar dans le forum Flash
    Réponses: 3
    Dernier message: 17/10/2003, 00h25

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