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