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 :

Variable prise pour une chaîne de caractère [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut Variable prise pour une chaîne de caractère
    Bonjour, je me suis mis à vba il y a environ une semaine en apprenant sur le web. Seulement là je suis bloqué.

    Je cherche un moyen de créer un lien hypertexte (fichier pdf) qui en fonction de de la cellule, renvoie au fichier portant le même nom que ma cellule.

    Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 2 To nb_lignes
     
         Dim part_number As String
         part_number = Cells(i, 3)
     
         ActiveSheet.Hyperlinks.Add Anchor:=Cells(i,3), _
         Adress:="C:\Users\Dossier\part_number.pdf"
     
    Next i
    Le problème évidemment c'est qu'il croit que part_number est un fichier...

    J'ai le même problème pour dire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 2 To nb_lignes
     
            Dim part_number As String
            part_number = Cells(i, 2)
     
            For j = 2 To nb_lignes
                  If Cells(j, 3) like "*part_number*" Then
                       Cells(j, 3) = "part_number"
    End If, Next j, Next i ..
    Ici encore il croit que si la cellule contient part_number et non la valeur de Cells(i, 2); alors ...

    Si besoin j'ai le code de ce que je veux faire mais qui ne marche pas.

    Ou le code qui marche où j'ai commencer à remplacer quelques part_number par leurs valeurs mais j'ai pas fini..

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Quand tu poste du code, mets le entre les balises Code (les dièses --> #)
    Si tu encadre une variable par des guillemets, elle deviens un texte en "dur" et non plus une variable ayant une valeur quelconque. Il te faut la "sortir" de la chaîne en utilisant des "&" pour concaténer sans valeur au reste de la chaîne :
    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
     
    Sub Test()
     
        'la variable ne doit pas être déclarée dans une boucle...
        Dim part_number As String
        Dim I As Integer
        Dim J As Integer
     
        For I = 2 To nb_lignes
     
            part_number = Cells(I, 3)
     
            'ici, la variable ne doit pas être entre guillemets...
            'entre guillemets, c'est considéré comme un texte en dur
            ActiveSheet.Hyperlinks.Add Anchor:=Cells(I, 3), _
            Adress:="C:\Users\Dossier\" & part_number & ".pdf"
     
        Next I
     
        For I = 2 To nb_lignes
     
            part_number = Cells(I, 2)
     
            For J = 2 To nb_lignes
     
                'idem...
                If Cells(J, 3) Like "*" & part_number & "*" Then
     
                    Cells(J, 3) = part_number
     
                End If
     
            Next J
     
        Next I
     
    End Sub
    Hervé.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut
    Cool ! J'y avais pas pensé !

    Juste eu a rajouté le cas ou la cellule était vide. Ça marche impeccable!

    Merci !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/05/2010, 23h39
  2. Réponses: 3
    Dernier message: 03/11/2009, 07h19
  3. Réponses: 13
    Dernier message: 26/09/2008, 17h43
  4. Réponses: 1
    Dernier message: 30/04/2007, 15h33
  5. Problème pour exécuter une chaîne de caractères
    Par Pongo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/09/2005, 10h34

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