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 :

Formule d'appel de la valeur d'une cellule dans une feuille différente [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 134
    Par défaut Formule d'appel de la valeur d'une cellule dans une feuille différente
    Bonjour,

    je souhaite effectuer une petite opération sous Excel mais je rencontre une difficulté.

    En fait, j'essaye d'insérer des formules dans plusieurs cellules d'une zone (qui se trouve sur une feuille) qui me permettent de répéter la valeur de diverses cellules d'une autre zone (qui se trouvent sur une autre feuille) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    debut_zone = CELLULE DE DEPART DE LA ZONE DE DESTINATION
    debut_zone_orig = CELLULE DE DEPART DE LA ZONE D'ORIGINE
     
        Dim i As Integer
        Dim formula_temp As String
     
        Sheets("feuil2").select
     
        ' Copier la valeur des cellules
        For i = 0 To 20
            formula_temp = "=feuil1!" & Sheets("feuil1").Range(debut_zone_orig).Offset(0, i).Address()
            Range(debut_zone).Offset(0, i).FormulaR1C1 = formula_temp
        Next
    Ce code ne fonctionne pas. J'ai passé un bon moment à essayer de comprendre pourquoi mais je n'arrive pas à comprendre pourquoi ça plante.

    Est-ce que vous auriez une idée pour me premettre de résoudre cette difficulté ?

    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Par défaut
    attention c'est "Feuil" et pas "feuil"
    et "Address" et pas "Address()"
    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
     
     
    debut_zone = CELLULE DE DEPART DE LA ZONE DE DESTINATION
    debut_zone_orig = CELLULE DE DEPART DE LA ZONE D'ORIGINE
     
        Dim i As Integer
        Dim formula_temp As String
     
        Sheets("Feuil2").select
     
        ' Copier la valeur des cellules
        For i = 0 To 20
            formula_temp = "=Feuil1!" & Sheets("Feuil1").Range(debut_zone_orig).Offset(0, i).Address
            Range(debut_zone).Offset(0, i).FormulaR1C1 = formula_temp
        Next
    tu devrais également déclarer debut_zone et debut_zone_orig comme des string

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 134
    Par défaut
    Je viens de transformer address() en address. J'ai toujours le même plantage.

    Ce que je ne comprends pas, c'est que quand j'affiche 'formula_temp', j'obtiens bien : =Feuil1!$D$33 qui est ce que je veux mettre dans ma cellule et qui marche quand je le mets directement dans une cellule dans excel (sans passer par VBA).

    D'autre part, les débuts de zone sont les paramètres de ma fonction :
    Function nommer(ByVal debut_zone As String, ByVal debut_zone_origine As String).

    Enfin, pour le nom de la feuille, elle a été nommée avec des minuscules donc c'est cohérent.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Formula au lieu de FormulaR1C1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To 20
        formula_temp = "=feuil1!" & Sheets("feuil1").Range(debut_zone_orig).Offset(0, i).Address()
        Sheets("feuil2").Range(debut_zone).Offset(0, i).Formula = formula_temp
    Next

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 134
    Par défaut
    Merci Mercatog, c'était bien cela. Erreur bête de ma part :-)

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

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  3. [XL-2003] Insérer la valeur d'une cellule dans une phrase d'une autre
    Par DonaldTron dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2009, 19h50
  4. Réponses: 2
    Dernier message: 30/10/2008, 13h28
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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