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 :

Automatisation fonction "FormulaR1C1" [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 15
    Par défaut Automatisation fonction "FormulaR1C1"
    Bonjour,

    Avez vous une idée de comment je pourrais automatiser ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("C26").FormulaR1C1 = "=SUM(R2C2:R[-22]C[1])"
    Range("D26").FormulaR1C1 = "=SUM(R2C3:R[-22]C[1])"
    Range("E26").FormulaR1C1 = "=SUM(R2C4:R[-22]C[1])"
    Range("F26").FormulaR1C1 = "=SUM(R2C5:R[-22]C[1])"
    Range("G26").FormulaR1C1 = "=SUM(R2C6:R[-22]C[1])"
    Merci à tous!

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    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
    18
    19
    20
    21
    22
    23
    24
    25
    Sub tt()
     
    fonction = "sum(": fermeFunction = ")"
     
    ligneRelative = -22: colonneRelative = 1
     
    ligneAbsolue = 2 'colonneAbsolue = 2 To 6
     
    Set dest = Feuil1.Range("C26"): Offset = 0
     
    For colonneAbsolue = 2 To 6
     
    adresseAbsolue = "R" & ligneAbsolue & "C" & colonneAbsolue
     
    adresseRelative = "R[" & ligneRelative & "]" & "C[" & colonneRelative & "]"
     
    formule = "=" & fonction & adresseAbsolue & ":" & adresseRelative & fermeFunction
     
    dest.Offset(, Offset).FormulaR1C1 = formule
     
    Offset = Offset + 1
     
    Next
     
    End Sub

  3. #3
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,
    Docmarti sympa ta version détaillé

    une version par rapport à l'exemple donné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Somme()
        For i = 0 To 4
            Cells(26, 3 + i).FormulaR1C1 = "=SUM(R2C" & 2 + i & ":R[-22]C[1])"
        Next
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 15
    Par défaut
    Many thanks guys !
    That's perfect !!
    Regards

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il n'y a aucune raison d'utiliser une boucle pour insérer une formule sur une plage de cellules. Une seule instruction suffit pour placer une formule dans une cellule ou un million de cellules à condition de maîtriser le référencement aux cellules (relative, absolue et mixte).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Somme_2()
     Range("C26:G26").Formula = "=SUM($B$2:D4)"
    End Sub
    Pour les nostalgiques, on peut également utiliser le référencement aux cellules en Style R1C1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Somme_2()
     Range("C26:G26").FormulaR1C1 = "=SUM(R2C2:R[-22]C[1])"
    End Sub
    Ne pas oublier d'ajouter bien entendu les objets parents de l'objet Range (feuille + classeur)

    A lire ces deux billets sur le sujet Ecrire une formule dans Excel à l'aide d'une procédure VBA et Comment écrire des formules plus complexes et rendre dynamique les références aux plages de cellules ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Salut Philippe,

    tu as tout à fait raison, en plus je l'avais déjà fait

    Edit : petite modif
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

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

Discussions similaires

  1. Fonction Replace pour quote
    Par piero53 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/11/2009, 01h19

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