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

VBA Discussion :

insérer un signet dans word à partir d'Excel


Sujet :

VBA

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut insérer un signet dans word à partir d'Excel
    Bonjour à tous,

    Je suis bloqué depuis plusieurs jours sur ce problème.
    Mon objectif est :
    1)d'insérer dans word un texte à partir d'excel : ça marche.
    2)de créer un signet soit prenant tout mon texte inséré (idéal) soit devant le texte inséré : là ça ne marche pas.

    Le signet devra être nommé en référence à une cellule nommé (ex:date11082011) cela marche dans word mais me met nom de signet incorrect à partir d'excel...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
          If testeur = paradat.Range.Text Then 
    'le test ne renvoie pas oui quand c'est le cas (donnée string)
            WordDoc.Bookmarks.Add Sheets("Mémoire").Range("N12").Value
    'nom de signet incorrect
            End If
    Merci d'avance pour votre aide.

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    En mode debug quel est le contenu de value, n'est-ce pas un format date?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Mémoire").Range("N12").Value
    Est-ce qu'il ne faut pas concaténer date devant ou supprimer des espaces?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "date" & Sheets("Mémoire").Range("N12").Value

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour Christophe,

    Merci pour ta réponse.

    Effectivement ma cellule N12 est au format : "date"jjmmaaaa

    j'ai rentré ce que tu ma conseillé en concaténant et lorsque la variable se charge elle a pour valeur : datejj/mm/aaaa . Du coup les / bloque la création du signet...

    Une idée?

    Merci d'avance

    Christophe

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Utiliser la fonction Replace sur ta variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(variable,"/","")

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    C'est réglé pour créer le signet grace à Christophe. Par contre, Le test if ne renvoie jamais vrai et pourtant lorsque je mets une pause égalité est là...

    Merci à Christophe en tous cas pour la fonction replace que je ne connaissais pas

    Bonne soirée

    Christophe

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        testeur = Sheets("Mémoire").Range("N11").Value & " - " & Sheets("Mémoire").Range("O3").Value & " :"
        For Each paradat In WordDoc.Paragraphs
            If testeur Like Trim(paradat.Range.Text) Then 'ne renvoie jamais vraie
            bookdate = "date" & Sheets("Mémoire").Range("N13").Value
            Sheets("Mémoire").Range("N12").Value = Replace(bookdate, "/", "")
            bookdate = Sheets("Mémoire").Range("N12").Value
            WordDoc.Bookmarks.Add bookdate, paradat.Range
            End If
        Next paradat
    avec le code ça peut aider...

  7. #7
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    L'opérateur Like est sensible à la casse.
    Est-ce que tu peux nous mettre le contenu de Trim(paradat.Range.Text) et celui de testeur.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    quand la condition est vrai :
    testeur= "01/09/2011 - de 9h00 à 10h15 :"
    et
    trim(paradat.Range.Text)= "01/09/2011 - de 9h00 à 10h15 :"

    like et = posent le même problème.

    merci

  9. #9
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Une idée, est-ce que tu peux vérifier d'avoir exactement les mêmes caractères dans le code ASCII par exemple (Le tiret n'est peut-être pas le même).

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Christophe,

    Désolé pour l'absence. Je ne trouve pas comment récupérer ASCII sur internet mais cela pourrais venir de là lors du passage de excel à word.
    Sais-tu comment faire? JE ne trouve rien sur internet depuis 2 jours. (mauvaise dénomination dans la recherche je pense.

    Merci

    Cordialement
    Christophe

  11. #11
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonsoir,
    Voici un bout de code rapidement réalisé qui indique si deux chaines sont identiques en comparant les caractères un à un dans le code ASCII.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub comparechainecodeascii(montexte As String, montexte2 As String)
    Dim i As Integer
    i = 1
    While i < Len(montexte) And Asc(Mid(montexte, i, 1)) = Asc(Mid(montexte2, i, 1))
    Debug.Print Asc(Mid(montexte, i, 1))
    i = i + 1
    Wend
    If i < Len(montexte) Then
    MsgBox "Le premier caractère différent est à la position " & i & "soit " & Mid(montexte, i, 1)
    Else
    MsgBox "les deux chaines sont identiques"
    End If
    End Sub
    Il donne à la fin si les deux chaines sont identiques ou pas en spécifiant la position qui change et le caractère correspondant de la première chaine.

    La fonction mid permet de couper une chaine de caractère et la fonction ASC donne le code ASCII correspondant à un caractère.
    La fonction Len calcule la longueur d'une chaine de caractère.

Discussions similaires

  1. [Toutes versions] altération dans word à partir d'excel
    Par froggyaz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/06/2010, 13h58
  2. [E-02] VBA : Récupérer du texte dans Word à partir d'Excel
    Par jmric49 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/03/2009, 18h21
  3. Recherche de texte dans word à partir d'excel
    Par bullrot94 dans le forum Excel
    Réponses: 2
    Dernier message: 19/10/2008, 14h43
  4. Initialiser un signet word à partir d'excel
    Par HAFNI84 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/05/2007, 01h08
  5. [VBA-E]Insérer des autotext dans Word à partir d'excel
    Par noordman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/04/2006, 15h34

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