Macro - Automatisation création d'une mini formule

Bonsoir bonsoir,

J'entame une nouvelle branche des macros et j'avoue être perdu

Je souhaite automatiser la création d'une formule mais elle doit commencer à une cellule "variable" (elle ne commence pas toujours à la même ligne).

Pour expliquer (ce munir du fichier), j'ai des valeurs d'angle et de Tension "Aller" et "Retour". Je dois les mettre leurs valeurs l'une après l'autre (Retour puis Aller ) ce que je fais déjà automatiquement via un macro dans la colonne E et F.

La dernière étape (qui est ce que je souhaite) c'est qu'à partir de la première valeur Aller (ici E/F 21) il y est le rajoute de la dernière valeur du Retour .

Du coup la G21 doit être "=E21+E$20" et idem même style pour H21 (=F21+F$20).

J'ai mise en jaune la partir avec rajout de E et F20

Le problème c'est que les données Aller et Retour n'ont jamais le même nombre de ligne ...

L'objectif est d'avoir le graphique compensé (et le donnée qui vont avec évidemment) car c'est ce que je dois analyser pour mon mémoire.

Merci d'avance,

Simon

Bonjour,

Ce n'est par très clair. Pour résumer, il faut trouver la référence de la dernière cellule. Alors, peut-on déduire que ta dernière cellule (des colonnes E et F), à prendre en considération, est identifiable par le fait que la cellule suivante à une valeur nulle (0) ? Et surtout est-ce le cas toujours ?

J'avoue ne pas avoir tout compris de ton hypothèse.

Après réflexion, voici une autre façon de formuler ça.

On va partir du fait qu'une précédente macro copie directement toutes les cellules du Retour dans les colonnes Rattrapage courbe (G-H), on pour ici on a déjà de G3:H20 de remplie.

A partir de là faudrait une macro qui repère la première cellule vide de G-H et y copie l'ensemble des cellules Aller (A-B) en y rajoutant pour toutes les cellules Aller copier la dernière valeur du Retour (c'est-à-dire ici E20 et F20 qu'il faut rajouter à toutes les cellules Aller)

C'est mieux expliquer ainsi ?

Le poste n'étant pas très clair, je vais en créer un autre mieux tourné

Bonjour,

Je suis navré car je n'ai pas pu suivre le fil à cause de mes déplacements professionnels. J'ai pensé que quelqu'un a pris le relais. Essaye le code suivant en l'adaptant au cas réel si besoin est :

Sub test()
    Dim derLigRempli%, derLigNul% 'déclaration variables
     Sheets("Faite vous plaisir").Activate 'on travaille sur cet onglet
     derLigRempli = Range("E" & Rows.Count).End(xlUp).Row
    derLigNul = WorksheetFunction.Match(0, Range("E:E"), 0)
    Range("G3:H" & derLigNul - 1).FormulaR1C1 = "=RC[-2]"
    Range("G" & derLigNul & ":H" & derLigRempli).FormulaR1C1 = "=RC[-2] + R" & derLigNul - 1 & "C[-2]"
End Sub

Salut,

Sorry, j'ai oublié d'indiquer que j'avais créer un autre poste avec des explications plus compréhensible pour faciliter les choses et la solution est arrivé ( merci à eriiic !)

voici une autre macro qui marche pour ma demande.

Sub rattrapage()
        Dim derlig As Long, derlig2 As Long
        derlig = Cells(Rows.Count, "C").End(xlUp).Row
        derlig2 = Cells(Rows.Count, "E").End(xlUp).Row
        Cells(derlig + 1, "G").Resize(derlig2 - derlig, 2) = Cells(derlig + 1, "E").Resize(derlig2 - derlig, 2).Value
        Cells(derlig, "C").Copy
        Cells(derlig + 1, "G").Resize(derlig2 - derlig).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
        Cells(derlig, "D").Copy
        Cells(derlig + 1, "H").Resize(derlig2 - derlig).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
        Cells(derlig + 1, "G").Resize(derlig2 - derlig, 2).Interior.ColorIndex = 6
    End Sub

Bonjour,

Une proposition avec la mise à jour du graphique.

Cdlt

Option Explicit
Private Sub cmdMAJ_Click()
Dim ws As Worksheet
Dim lastRow As Long, lRow As Long, i As Long

    Application.ScreenUpdating = False
    Set ws = ActiveSheet

    With ws
        lastRow = .Cells(Rows.Count, 5).End(xlUp).Row
        .Range("G3:H" & lastRow).Clear

        For i = 3 To lastRow
            If .Cells(i, 5) <> 0 Then
                .Cells(i, 7) = .Cells(i, 5)
                .Cells(i, 8) = .Cells(i, 6)
            Else
                lRow = .Cells(Rows.Count, 7).End(xlUp).Row
                Exit For
            End If
        Next i

        For i = lRow + 1 To lastRow
            .Cells(i, 7) = .Cells(lRow, 7) + .Cells(i, 5)
            .Cells(i, 8) = .Cells(lRow, 8) + .Cells(i, 6)
        Next

        ActiveWorkbook.Names.Add _
        Name:="Amplitude", _
        RefersTo:=.Range("G3:G" & lastRow)

        ActiveWorkbook.Names.Add _
        Name:="MF", _
        RefersTo:=.Range("H3:H" & lastRow)
    End With

    Set ws = Nothing

End Sub
Rechercher des sujets similaires à "macro automatisation creation mini formule"