Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

garder un résultat macro après un nouveau calcul

Damien123

XLDnaute Nouveau
Bonsoir,

Je cherche a créer un un tableau "DONNEES" qui se remplit par macro avec des données importées quotidiennement "Feuil1" qui change chaque jour.
Le problème est qu'avec ma macro les données enregistrées ne sont pas gardées le lendemain.
De plus je ne sais pas comment recopier automatiquement cette macro sur les différents jours sans devoir recopier cellule par cellule.
Idéalement je souhaite aussi que quand il n'y a pas de donnée la cellule n'affiche rien au lieu de 0.

voici ma macro:




Sub Macro1()
'
' Macro1 Macro
'
'
Range("B6") = "=SUMIF(Feuil1!R1C1,DONNEES!R[-1]C,Feuil1!R2C2)"
Range("B7") = "=SUMIF(Feuil1!R1C1,DONNEES!R[-2]C,Feuil1!R3C2)"
Range("B6").Copy
Range("B6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("B7").Copy
Range("B7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub



Merci


Damien
 

Pièces jointes

  • TEST TAUX.xlsx
    14.5 KB · Affichages: 24

Paf

XLDnaute Barbatruc
Bonjour et bienvenue sur XLD

si j'ai bien compris:

en feuille DONNEES, remplacer la formule existante en B5 par : =DATE(ANNEE(Feuil1!A1);MOIS(Feuil1!A1);1)
sinon en B5 on aura toujours la date saisie en A1 de la feuille Feuil1.

une proposition de macro:
Code:
Sub Macro1()
Dim Plage, i As Byte, OK As Boolean, WD As Worksheet, W1 As Worksheet
Set WD = Worksheets("DONNEES")
Set W1 = Worksheets("Feuil1")
Plage = WD.Range(WD.Cells(5, 1), WD.Cells(5, WD.Cells(5, Columns.Count).End(xlToLeft).Column))
For i = LBound(Plage, 2) To UBound(Plage, 2)
    If Plage(1, i) = W1.Range("A1") Then
        Col = i
        OK = True
        Exit For
    End If
Next
If OK Then
    WD.Cells(6, Col) = W1.Range("B2")
    WD.Cells(7, Col) = W1.Range("B3")
Else
    MsgBox "date invalide"
End If
End Sub

A voir ce que ça donne au changement de mois et d'année.

On aurait pu utiliser la fonction Find plutôt qu'une boucle, mais je ne m'en suis pas sorti à cause du format des dates.

A+
 

Damien123

XLDnaute Nouveau
Bonjour Paf,

Merci de votre réponse rapide. Je débute doucement dans la macro

La feuille "DONNEES" est une feuille annuelle que je souhaite garder avec des cellules remplies quotidiennement
La feuille "Feuil1" sera modifiée chaque jour.
La macro pioche la date de la feuille "Feuil1" et rempli en fonction les valeurs dans "DONNEES"
J'ai plus ou moins bricolé depuis hier et ça fonctionne avec cette macro ci joint.

Maintenant je ne sais pas comment dupliquer ça pour le reste du mois et ensuite le reste de l'année.
Je pense aussi qu'il y a une formule plus simple pour sélectionner un groupe de cellules.

Merci




Sub Macro1()
' Macro1 Macro
If [B6] > 0 Then Exit Sub
Range("B6") = "=SUMIF(Feuil1!R1C1,DONNEES!R[-1]C,Feuil1!R2C2)"
Range("B6").Copy
Range("B6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Sub Macro2()
If [B7] > 0 Then Exit Sub
Range("B7") = "=SUMIF(Feuil1!R1C1,DONNEES!R[-2]C,Feuil1!R3C2)"
Range("B7").Copy
Range("B7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Sub Macro3()
If [C6] > 0 Then Exit Sub
Range("C6") = "=SUMIF(Feuil1!R1C1,DONNEES!R[-1]C,Feuil1!R2C2)"
Range("C6").Copy
Range("C6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Sub Macro4()
If [C7] > 0 Then Exit Sub
Range("C7") = "=SUMIF(Feuil1!R1C1,DONNEES!R[-2]C,Feuil1!R3C2)"
Range("C7").Copy
Range("C7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
 

Pièces jointes

  • TEST TAUX MACRO.xlsm
    21.2 KB · Affichages: 29

Discussions similaires

Réponses
2
Affichages
274
Réponses
5
Affichages
310
Réponses
3
Affichages
356
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…