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 :

Pb macro modification formule dans cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Par défaut Pb macro modification formule dans cellule
    Bonjour
    J'ai créer une macro visant à copier des feuilles et à incrémenter une formule dans une cellule. Cela fonctionne plutôt pas mal, hormis un détail: lors de l'incrémentation d'une variable dans la formule, il est ajouté 2 apostrophes à la formule, ce qui provoque une erreur...forcément!
    ci dessous le code:


    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
    Sub ajout_feuilles()
    Dim nom, c
    Dim f As Integer
    f = 7
    For Each c In Range("liste")
    nom = c.Value
    Sheets("1 MODELE").Copy AFTER:=Sheets(Sheets.Count)
     
    ActiveSheet.Name = nom
     
    ActiveCell.FormulaR1C1 = "=Tontes!d" & (f)
     
    f = f + 3
     
    Next c
     
    End Sub
    le résultat est le suivant: =Tontes!'D13'

    merci de vos contributions pour ne pas avoir ces 2 '....

  2. #2
    Invité
    Invité(e)
    Par défaut bonjour,
    tu saisi ta formule comme tu le ferais dans Excel.
    hors dans vb les cellule sont sous la forme R1C1 et même tu utilise FormulaR1C1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=Tontes!R" & f  & "C4"
    R=Row (ligne) c= Colonne

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Par défaut
    Merci beaucoup!!!
    Ca marche!!
    je ne comprends pas trop pourquoi mais bon..
    Bonne journée

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par stilan Voir le message
    Merci beaucoup!!!
    Ca marche!!
    je ne comprends pas trop pourquoi mais bon..
    Bonne journée
    R1=Row (ligne) C1= Colonne

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    A une époque, les colonnes (tout comme les lignes) étaient numérotées (1,2,3...) et non pas désignées par des lettres (A,B,C...).

    Pour désigner une cellule, on n'écrivait pas B6 mais L6C2.
    Le passage à la syntaxe A1 a été choisie pour diminuer la taille des formules.

    Il est possible d'utiliser l'ancienne notation en cochant le paramètre "Style de référence L1C1" dans la page Formules des Options Excel.
    VBA utilise toujours l'ancienne notation.

    Personnellement, c'est toujours cette notation que j'utilise. Je la trouve plus compréhensible pour les références relatives (les $ de la syntaxe A1, les parenthèses de la syntaxe L1C1).
    Avec la notation A1, je trouve gênant qu'une même formule avec références relative recopiée dans différentes cellules n'ait pas le même contenu.
    Pour donner un exemple, si l'on veut qu'une cellule affiche la valeur de la cellule de droite + 1, il faudra mettre dans A1 "=$B$1". Si on la recopie dans la cellule du dessous, elle ne pointe pas sur la cellule de droite mais toujours sur la cellule de droite de la cellule précédente.
    Avec la notation L1C1, on écrit la formule "=LC(1)+1" qui marche pour toutes les cellules.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Il est possible d'utiliser l'ancienne notation en cochant le paramètre "Style de référence L1C1" dans la page Formules des Options Excel.
    VBA utilise toujours l'ancienne notation.
    Non, VBA utilise toutes les notations, regarder du côté de la propriété FormulaR1C1 par exemple …

Discussions similaires

  1. [BO XI][DESKI] PROBLEME FORMULE DANS CELLULE
    Par jbouat dans le forum Deski
    Réponses: 4
    Dernier message: 24/04/2008, 23h34
  2. calculs de formules dans cellules
    Par bobby5169 dans le forum Excel
    Réponses: 14
    Dernier message: 24/09/2007, 08h25
  3. [VBA-E]Formule dans cellule en VBA
    Par dev81 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/06/2007, 14h03
  4. [VBA-E] insertion de formule dans cellule
    Par jeff37 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/05/2006, 13h53
  5. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18

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