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 VBA, compilation de plusieurs formats [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Alternant
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Formule VBA, compilation de plusieurs formats
    Bonjour à tous,
    Je souhaite mettre à jour la formule d'une case à chaque fois que je lance la macro suivante:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub MaJ()
    Dim CAHIER As Workbook
    Dim source As Worksheet
    Dim cible As Worksheet
    Dim ligne As Integer
    Dim Val1 As Variant
    Dim Val2 As Variant
    Dim Val3 As Variant
    Dim Val4 As Variant
        
        Set CAHIER = ActiveWorkbook
        Set cible = CAHIER.Worksheets("Capitalisation")
        Set source = CAHIER.Worksheets("Temps calcul")
        
    Worksheets("Capitalisation").Activate
    
    For ligne = 2 To 10000
        If Cells(ligne, 2).Value <> "" Then
        GoTo suite
        Else
            Rows(ligne & ":" & ligne).Select
            Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            cible.Cells(ligne, 2).Value = source.Cells(13, 2).Value
            cible.Cells(ligne, 3).Value = source.Cells(8, 6).Value
            cible.Cells(ligne, 4).Value = 1
            cible.Cells(ligne, 5).Value = source.Cells(11, 4).Value
            cible.Cells(ligne, 6).Value = source.Cells(11, 5).Value
            cible.Cells(ligne, 7).Value = source.Cells(11, 6).Value
            cible.Cells(ligne, 8).Value = source.Cells(11, 7).Value
            cible.Cells(ligne, 9).FormulaR1C1 = "=RC[-6]*RC[-5]*R[3]C[-6]*(RC[-4]+RC[-3]+RC[-2]+RC[-1])"
            cible.Cells(ligne + 1, 9).Formula = "=SUM(I2:I" & ligne & ")"
            Val1 = cible.Cells(ligne + 6, 5).Formula
            cible.Cells(ligne + 6, 5).Formula = "=R[-3]C[-2]*R[-6]C[-2]*R[-6]C[-1]*R[-6]C + & Val1 &"
            'Val2 = cible.Cells(ligne + 6, 6).Formula
            'cible.Cells(ligne + 6, 6).Formula = "=(" & Val2 & "+ R[-3]C[-3]*R[-6]C[-3]*R[-6]C[-2]*R[-6]C)"
            'Val3 = cible.Cells(ligne + 6, 7).Formula
            'cible.Cells(ligne + 6, 7).Formula = "=(" & Val3 & "+ R[-3]C[-4]*R[-6]C[-4]*R[-6]C[-3]*R[-6]C)"
            'Val4 = cible.Cells(ligne + 6, 8).Formula
            'cible.Cells(ligne + 6, 8).Formula = "=(" & Val4 & "+ R[-3]C[-5]*R[-6]C[-5]*R[-6]C[-4]*R[-6]C)"
            Exit For
        End If
    suite:
     Next
     
    End Sub
    'Problème sur la ligne en bleue et les suivantes

    Le but est de reprendre une formule déjà présente dans une case de l'onglet (formule format excel : E2*F5+A3.......) et d'y ajouter les données importées par la macro (format VBA : R[-4]C*RC[2].....)
    J'ai l'impression d'avoir essayé une infinité de syntaxe mais aucune ne fonctionne.

    Si quelqu'un à une idée je l'en remercie grandement et mon projet pourra enfin voir le jour

    A+

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    pas bien compris le détail de ta demande mais la formule à passer est une chaine.
    Si tu as 2 morceaux, il faut les concatener :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ta_cell.Formula = "ta_formule_part1" & "ta_formule_part2"
    Si la 2nde partie est une formule d'une cellule, n'oublie pas d'enlever le "=" du début, et de mettre l'opérateur voulu (&, +, *, etc), et éventuellement des parenthèses si elles sont nécessaires.
    Si s'ajoute un problème de type de références, tu as la méthode ConvertFormula pour les convertir (A1 <-> R1C1, absolues <-> relatives)

    Si toujours des soucis, lors de l'erreur met un espion sur l'expression à calculer (sélectionner "ta_formule_part1" & "ta_formule_part2" et faire glisser dans la fenêtre Espions), tu verras où cloche ta formule.

    eric

    Edit : après avoir relu ton code moins sommairement et sous réserve que j'ai compris ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Val1 = Mid(cible.Cells(ligne + 6, 5).Formula, 2)
    cible.Cells(ligne + 6, 5).Formula = "=R[-3]C[-2]*R[-6]C[-2]*R[-6]C[-1]*R[-6]C +" & Val1 & ""

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Alternant
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Bonjour et désolé pour la réponse tardive.

    En combinant vos idées une solution viable s'est degage. Même si je doute encore de sa robustesse.

    Qui qu'il en soit merci beaucoup pour votre aide.

    A+

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

Discussions similaires

  1. [XL-2010] VBA - compiler des données : boucler sur tous les onglets de plusieurs fichiers
    Par Joeytriviani dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/11/2017, 17h29
  2. Etendre une formule VBA à plusieurs lignes
    Par clem76000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/03/2013, 15h01
  3. [VBA Excel] Créer plusieurs contrôles dynamiquement
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/12/2005, 17h27
  4. Imprimer automatiquement fichiers de plusieurs formats
    Par lutin511 dans le forum Windows
    Réponses: 5
    Dernier message: 07/12/2005, 18h38
  5. [VBA-W] Executer plusieurs fois la même procédure
    Par delamarque dans le forum VBA Word
    Réponses: 3
    Dernier message: 05/12/2005, 13h39

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