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 :

Signets dans Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Developpeur web et Access VBA
    Inscrit en
    Janvier 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur web et Access VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 457
    Par défaut Signets dans Excel
    J'ai cherché de partout sans trouver de réponse...

    J'utilise VBA pour générer dans Word des signets et cela marche à merveille !
    Mais je voudrais maintenant faire de même avec Excel et je ne connais pas la démarche...
    En claire : Comment d'une base Access envoyer des données précisément dans des cellules d'Excel via des signets ou autre chose ?

    Petite précision, avec les signets dans word, un utilisateur positionne où il souhaite le signet dans la page, puis VBA lis la page et positionne les données là où le signet est.
    L'utilisateur n'a donc pas à mettre en place du code VB quand il fait son document modele, c'est bien ce genre de fonction que je souhaite mettre en place, en gros c'est récupérer des données simple comme le nom, l'adresse, le CP et la ville d'un client dans l'entête d'un document Excel en laissant l'utilisateur choisir l'endroit dans la page Excel...

    Merci !

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    ce que je connais de plus proche dans Excel ce sont les noms que l'on peut donner à une cellule ou une plage de cellules.

    Insertion->Nom->Définir
    On crée une association entre un nom et une cellule (ou une plage de cellules)
    Ces noms sont accessibles dans la collection Names de l'objet Workbook.

    Exemple rapide de code créé dans Excel
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim wbk As Excel.Workbook
    Dim nm As Excel.Name, strMsg As String
     
    Set wbk = ActiveWorkbook
     
    strMsg = strMsg & wbk.Names("Client").RefersToRange.Cells(1, 1) & vbCrLf
    strMsg = strMsg & wbk.Names("Adresse").RefersToRange.Cells(1, 1) & vbCrLf
    strMsg = strMsg & wbk.Names("CP").RefersToRange.Cells(1, 1) & " "
    strMsg = strMsg & wbk.Names("Ville").RefersToRange.Cells(1, 1)
     
    MsgBox strMsg
    Dans l'exemple j'ai quatre cellules nommées Client, Adresse, CP, et Ville.
    Je récupère le contenu à l'aide de la propriété RefersToRange qui renvoie un objet Range (plage de 1 ou plusieurs cellules).
    Avec Cells(1,1) je prends la première Cellule de chaque plage (Range) nommée.

    Pour de plus amples informations, tu fais comme moi : F1 dans l'éditeur VB d'Excel.

    A+

  3. #3
    Membre éclairé
    Profil pro
    Developpeur web et Access VBA
    Inscrit en
    Janvier 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur web et Access VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 457
    Par défaut
    Merci pour ce code
    Mais si j'ai bien compris c'est l'utilisateur qui en créant son modèle dans Excel est obligé de se taper le code vba sous Excel => Pas bon !

    L'avantage des signets dans Word c'est bien que l'utilisateur met en place avec un menu tout bête ses signets dans son doc Word et la programmation de vba dans Access qui fait tout le reste...
    Alors effectivement nommer une cellule peut-être une bonne piste, mais comment à partir d'Access faire pour injecter les données qu'on souhaite dans les cellules de la page Excel sans que l'utilisateur ait à saisir du code vba ???

  4. #4
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    L'utilisateur à juste à faire
    Insertion->Nom->Définir dans Excel sur la cellule de son choix
    au lieu de
    Insertion->signet dans Word

    Mon exemple de code montre comment lire le contenu de cellules auxquelles on a donné un nom.
    Pour y écrire (toujours avec mon exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wbk.Names("Client").RefersToRange.Cells(1, 1) = "Toto"
    Si Client fait référence à la cellule C3 de la deuxième feuille du classeur, cela va mettre "Toto" dans cette cellule.

    A+

  5. #5
    Membre éclairé
    Profil pro
    Developpeur web et Access VBA
    Inscrit en
    Janvier 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur web et Access VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 457
    Par défaut
    Et le code si dessous il est dans la base access ou dans le fichier excel ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wbk.Names("Client").RefersToRange.Cells(1, 1) = "Toto"

  6. #6
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Voici un exemple de code depuis Access.
    Il faut ajouter une référence à "Microsoft Excel x.x Object Library" (x.x selon version d'office)
    Code vb : 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
    Dim xlApp As Excel.Application
    Dim wbk As Excel.Workbook, blnKillExcelOnExit As Boolean
    Dim strXlFile As String
     
    ' Obtenir ou créer instance d'Excel.exe
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    On Error GoTo 0
    If xlApp Is Nothing Then
       Set xlApp = New Excel.Application
       blnKillExcelOnExit = True
    End If
     
    ' Ouvrir le classeur
    strXlFile = "C:\Mes Documents\LeClasseur.xls"
    Set wbk = xlApp.Workbooks.Open(strXlFile)
    ' Ecrire dans classeur
    wbk.Names("Client").RefersToRange(1, 1) = "Toto"
    ' Sauver et fermer le classeur
    wbk.Save
    wbk.Close
     
    ' Libérer les objets
    Set wbk = Nothing
    If blnKillExcelOnExit Then xlApp.Quit
    Set xlApp = Nothing
    A+

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

Discussions similaires

  1. insérer un signet dans word à partir d'Excel
    Par kristoff dans le forum Général VBA
    Réponses: 10
    Dernier message: 02/09/2011, 00h05
  2. [XL-2003] Effacer des signets dans un document word depuis excel
    Par scoubi77 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/03/2010, 21h20
  3. Récupérer la liste des signets des fichier PDF dans EXCEL
    Par pio_killer dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2010, 13h35
  4. Récup contenu signet dans cellule Excel
    Par Domino40 dans le forum VBA Word
    Réponses: 10
    Dernier message: 23/11/2008, 16h05
  5. signet dans excel
    Par imeys dans le forum Excel
    Réponses: 1
    Dernier message: 17/04/2007, 19h53

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