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 :

Guillemets dans VBA pour adressage indirect dans cellule [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 121
    Par défaut Guillemets dans VBA pour adressage indirect dans cellule
    Bonjour,

    Je ne sais pas si mon titre est explicite alors je vais aller directement au problème

    Dans un module VBA je souhaite écrire dans des cellules des adressages indirects.

    Exemple qui fonctionne:
    y: ligne qui s'incrémente
    G1 & G2: coordonnées de cellules qui contiennent respectivement des nombres qui seront repris dans l'adresse indirecte

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F" & y) = "=""Datas!$"" & $E$" & y & " & G1 & "":$"" & $E$" & y & "& G2"

    Ce qui donne dans la feuille Excel ce résultat correct:
    Formule de la cellule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ="Datas!$" & $E$58 & G1 & ":$" & $E$58& G2
    Qui donne ce résultat: Nom : Capture.PNG
Affichages : 1377
Taille : 923 octets pour des cellules G1 de valeur 8651 et G2 de 10084
    Tout fonctionne à merveille (même si j'ai bien noté que des $ étaient en double ), la colonne renvoyée "AC" est le résultat correct (valeur de la cellule cible)

    J'ai voulu faire pratiquement la même chose mais en mettant le nom de la feuille dans une variable
    qui se nomme: Onglet_data
    Et c'est là que ça se complique !!

    Si j'écris:
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F" & y) = "=""" & Onglet_data & "!"" & ""$E$"" & y & G1 & "":$"" & ""E$"" & y & G2"

    je me retrouve avec cette formule dans la cellule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="Datas_DE01!" & "$E$" & y & G1 & ":$" & "E$" & y & G2
    (Datas_DE01 est le nom de la feuille, pas de problème)
    On constate que la variable "y" est présente !! (alors que précédemment c'était seulement sa valeur qui était concaténée à la chaine "$E$"
    Forcément la cellule me renvoie un "#VALEUR!"

    J'ai essayé une multitude de combinaisons qui se soldent par une erreur VBA du style :
    Nom : Capture.PNG
Affichages : 1581
Taille : 4,6 Ko

    Je ne sais plus comment faire !!
    Pouvez-vous m'aider !!!!

    @+

    Nono

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut Guillemets dans VBA pour adressage indirect dans cellule
    Fais un debug.print sur tes variables pour voir leur contenu exact, et corriger le tir

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 121
    Par défaut
    re,

    Il n'y a aucun problème avec les variables !!
    C'est uniquement l'imbrication des guillemets...

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Peut-être essayer comme ceci ?

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F" & y) = "=" & Onglet_data & "!$E$" & y & G1 & ":$E$" & y & G2

    Ceci dit, on ne sait pas trop ce que contiennent y, G1 et G2

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 121
    Par défaut
    Bonsoir,

    Pour info:

    y est une variable que j'incrémente dans une boucle et qui représente le numéro de ligne (donc un entier)
    G1 et G2 sont également des entiers qui représente la ligne de début et de fin d'une plage de données pour un graphique dynamique.

    La formule ci-dessus ne renvoie pas d'erreur mais ne donne pas le résultat escompté car la formule finale dans la cellule n'a rien à voir avec l'exemple que j'ai donné plus haut.
    J'ai bien détaillé le problème dans mon premier post, le résultat attendu dans la cellule est:

    Formule de la cellule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ="Datas!$" & $E$58 & G1 & ":$" & $E$58& G2
    On y retrouve des guillemets.
    Dans cette exemple y avait la valeur 58 et a été collée à la chaine "$E$"
    La formule est la même que celle-ci qui fonctionne bien:

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F" & y) = "=""Datas!$"" & $E$" & y & " & G1 & "":$"" & $E$" & y & "& G2"

    Sauf que "Datas!$" qui est le nom d'une feuille a été remplacé par une variable...

    Je joins un fichier d'exemple, ce sera plus parlant !!

    test.xlsm

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Je ne vois pas comment une cellule peut contenir une série de données (AC8651:AC10084)
    Sans le signe "=", ça pourrait donner ceci si E58 contient "AC"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F" & y) = Onglet_data & "!$" & Range("E58") & Range("G1") & ":$" & Range("E58") & Range("G2")
    Modification pour tenir compte de la variable "y", mais toujours sans le signe "="

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F" & y) = Onglet_data & "!$" & Range("E" & y) & Range("G1") & ":$" & Range("E" & y) & Range("G2")

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 121
    Par défaut
    Citation Envoyé par parmi Voir le message
    Je ne vois pas comment une cellule peut contenir une série de données (AC8651:AC10084)
    Sans le signe "=", ça pourrait donner ceci si E58 contient "AC"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F" & y) = Onglet_data & "!$" & Range("E58") & Range("G1") & ":$" & Range("E58") & Range("G2")
    Avez-vous essayer le fichier joint de mon dernier post ?

    La cellule ne contient pas une série de données, elle contient une adresse de plage (qui est reprise dans en tant que plage de données dans un graphique).

    Mon but est d'obtenir le même résultat avec le nom de feuille en variable que la version avec nom de la feuille écrit en fixe dans le code VBA.

    Mon fichier joint expose parfaitement le problème !!

    test.xlsm

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

Discussions similaires

  1. [XL-2013] Quel code vba pour inserer image dans userform
    Par david.guedes dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/06/2015, 09h11
  2. Traduire INDIRECT dans VBA
    Par counterbob dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/12/2014, 20h07
  3. Réponses: 4
    Dernier message: 14/05/2014, 10h43
  4. Réponses: 2
    Dernier message: 31/07/2013, 14h53
  5. [Toutes versions] Requête SQL dans VBA pour effectuer un calcul
    Par Lincoln911 dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/04/2010, 14h47

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