Stockage automatique des données à une date donnée

Bonjour à tous,

Je viens à votre rencontre car mes connaissances en VBA sont très limitées et je cherche à faire quelque chose de très compliqué...

Je souhaite que les valeurs de 4 cellules, à la date donnée dans la 4e cellule, s'effacent automatiquement et se retrouvent sur une autre feuille du classeur. Une fois les cellules effacées et stockées sur l'autre feuille, j'aimerais aussi qu'une nouvelle date s'affiche automatiquement (la date du lendemain).

Contexte : je construis actuellement un fichier excel pour suivre la production de nos collaborateurs par cycles de 4 mois, dont j'ai recréé une version très simplifiée en pièce jointe pour illustrer mon propos.

Donc à partir du fichier en pièce jointe, j'aimerais par exemple que pour l'agent 1, à la date de fin de cycle du 20/02/2018, les 4 cellules s'effacent et migrent vers la feuille agent 1, et qu'apparaisse alors dans la colonne "Début de cycle" la date du 21/02/2018 qui correspondrait au nouveau cycle de production.

Merci infiniment à ceux qui pourront m'aider ou qui essaieront de m'aider !

Salut Kogalife,

4 mois pour 1 cycle, ça fait 3 cycles sur un an : j'en vois 4!

Où doit s'inscrire le total annuel?

A+

Salut Curulis,

Oui tu as raison, j'ai fait le doc super vite fait je me suis pas rendue compte : ce serait 3 cycles par an.

Le total annuel je sais faire, je mettrai juste la somme des trois cellules "production réalisée" pour 3 cycles à côté du tableau.

Est-ce que le reste t'inspire ?

Merci de ton aide

Hello,

je fais remonter le sujet parce que je n'ai toujours pas de solution..

J'ai trouvé un code qui permet de déplacer des lignes entières vers une autre feuille en fonction de la valeur d'une cellule mais il faudrait l'adapter. J'ai besoin de déplacer la valeur d'une cellule dans une cellule d'une autre feuille en fonction d'une date;

 Sub Filtre_convention()

  Dim Lig     As Long
  Dim Col     As String
  Dim NbrLig  As Long
  Dim NumLig  As Long

  Sheets("Conventions terminées").Activate 'feuille de destination

  Col = "A"                 ' colonne de la donnée non vide à tester
  NumLig = Cells(250, Col).End(xlUp).Row
  With Sheets("Conventions en cours")     ' feuille source
  NbrLig = .Cells(250, Col).End(xlUp).Row
  For Lig = 4 To NbrLig
    If .Cells(Lig, Col).Value = "Mort" Then
      .Cells(Lig, Col).EntireRow.Copy
      NumLig = NumLig + 1
      Cells(NumLig, 1).Select
      ActiveSheet.Paste
      .Cells(Lig, Col).EntireRow.Delete
    End If
  Next
  End With

End Sub

Salut Kogalife,

j'avoue que je t'avais perdue de vue...

Voici un premier jet de ton fichier.

  • la macro est dans le module de ThisWorkbook ;
  • à l'ouverture du fichier, elle lit les dates en [G:G] dans 'Production' ;
  • les dates dépassées sont dispatchées dans les feuilles concernées et remises à jour pour un nouveau cycle ;
  • les cadres dans les feuilles des agents sont recopiés au fur et à mesure du remplissage en alternant la couleur intérieure pour distinguer les années.
Private Sub Workbook_Open()
'
Dim sWkP As Worksheet, sWkA As Worksheet
Set sWkP = Worksheets("Production")
'
Application.ScreenUpdating = False
'
With sWkP
    For x = 7 To .Range("G" & Rows.Count).End(xlUp).Row
        If CDate(.Cells(x, 7)) < Date Then
            With Worksheets(CStr(.Cells(x, 3)))
                iRow = .Range("D" & Rows.Count).End(xlUp).Row + 1
                .Range("D" & iRow & ":G" & iRow).Value = sWkP.Range("D" & x & ":G" & x).Value
                If .Cells(iRow, 3) = "Cycle 3" Then
                    .Range("B" & iRow - 2 & ":G" & iRow).Copy Destination:=.Range("B" & iRow + 1 & ":G" & iRow + 3)
                    .Range("D" & iRow + 1 & ":G" & iRow + 3).ClearContents
                    .Range("B" & iRow + 1 & ":G" & iRow + 3).Interior.Color = IIf(.Cells(iRow, 3).Interior.Color = xlNone, _
                                            RGB(215, 215, 215), xlNone)
                End If
            End With
            .Range("E" & x & ":F" & x).ClearContents
            .Range("D" & x).Value = DateAdd("d", 1, CDate(.Range("G" & x).Value))
            .Range("G" & x).Value = DateAdd("m", 4, CDate(.Range("G" & x).Value))
        End If
    Next
End With
'
Application.ScreenUpdating = True
'
End Sub

Voilà, à tester!

A+

Salut Curulis,

Merci beaucoup pour ton aide, le code fonctionne super bien !

Cependant, j'ai du mal à l'adapter à mon fichier car il est un peu plus compliqué que le "MigrationAutomatique" sur lequel tu as travaillé.

La réalité est que je n'ai pas une feuille par agent mais que sur un même onglet j'ai toutes les fiches "agent" grâce à une liste déroulante et à la fonction RECHERCHEV. Je ne sais pas comment adapter ton code avec cette fonction...

Je te renvoie un fichier pour illustrer, cette fois il se rapproche vraiment de mon fichier original.

Encore merci de prendre du temps pour m'aider ! Je n'y arriverais pas toute seule

Salut Kogalife,

cette fois il se rapproche vraiment de mon fichier original

Très bien! Quand il sera tout à fait conforme, je jetterai un oeil!

A+

Haha oui je suis désolée je n'avais pas pensé que RECHERCHEV pourrait poser un problème avec le code VBA...

Maintenant il est structurellement tout à fait conforme à l'original.

C'est sûr que ce serait plus simple que je t'envoie le fichier sur lequel je travaille mais pour des raisons de confidentialité, c'est impossible.

Après ça je ne t'embêterai plus

Merci!!

Hello,

j'ai encore un petit peu amélioré le fichier pour que ce soit le plus clair possible en ajoutant plusieurs lignes pour accueillir les données de production.

L'onglet à modifier est le "suivi partenaires" et l'autre, "suivi production", est l'historique qui doit se mettre à jour automatiquement.

Merci d'avance

Salut Kogalife,

c'est très joli tout ça mais guère pratique et surtout, il y a comme qui dirait un truc qui cloche!

Tu accumules les problèmes présents et à venir dans ta feuille 'Suivi de production' :

  • les cellules fusionnées sont à proscrire et toutes les infos sensibles y sont logées ;
  • il y a une profusion de lignes vides ;
  • une liste de validation, c'est très bien, mais, quand je change d'agent... où vais-je chercher son historique de production?
Il te manque une feuille BDD reprenant l'ensemble des agents, leurs infos personnelles et leur historique de production.

La feuille 'Suivi partenaires' mélange les genres!

A ce moment, ta liste de validation servira à quelque chose!

Bon, tu m'organises ça (sans cellules fusionnées et sans lignes vides). Si j'ai le temps, je te proposerai un exemple.

A+

bonjour à vous

trop compliqué !

faire ultra-simple : une feuille de saisie en colonnes simples et lignes de saisie qu'on n'efface jamais.

on ajoute une ligne pour chaque personne et chaque période.

dans 1000 ans, ça fonctionnera encore

les colonnes :

Agent, Début de cycle Production attendue Production réalisée Fin de cycle

la visu par dates/années et:ou par agent se fait avec un ou 2 TCD

aucun calcul ! aucune macro !

Salut Curulis,

une liste de validation, c'est très bien, mais, quand je change d'agent... où vais-je chercher son historique de production?

Il te manque une feuille BDD reprenant l'ensemble des agents, leurs infos personnelles et leur historique de production.

C'est bien ça le problème, je voulais savoir si c'était possible de combiner une macro comme celle que tu m'avais fait avec la liste de validation et la fonction RECHERCHEV. Et en théorie la feuille 'suivi partenaires' est ma base de données mais je voulais que les données s'effacent automatiquement sinon je me retrouve avec un tableau extrêmement long.

Comme ça a l'air d'être impossible je vais créer un fichier à part avec un onglet par agent, comme sur le premier exemple, et je vais essayer d'adapter ton code. Merci beaucoup pour ton aide en tout cas et le temps que tu as consacré à mon sujet

jmd, merci de ta réponse ! Je vois à peu près ce que tu veux dire mais si on rajoute un ligne pour chaque agent tous les 4 mois, je vais me retrouver avec un tableau super long puisque je n'ai pas réellement 5 agents comme sur les exemples mais une centaine et ce chiffre peut continuer à augmenter.

Sur mon fichier réel, l'onglet 'Suivi partenaires' contient beaucoup plus d'infos et de colonnes pour une centaine de courtier c'est pour ça que j'avais créé ces fiches individuelles avec la validation des données pour que ce soit plus lisible pour ceux qui utilisent le tableau et ça fonctionne bien donc j'aimerais vraiment le garder ^^

Bonjour Kogalife,

impossible n'est pas Excel!

Tu peux garder l'historique de chaque agent (même des milliers) avec leurs données personnelles sur une SEULE feuille sans que cela pose le moindre problème, tant pour le stockage que pour retrouver tel ou tel agent en un éclair!

Créer des dizaines de fiches (onglets) ne te rendra pas la tâche plus aisée, au contraire.

Si personne ne te propose quelque chose d'ici ce soir, je me ferai un plaisir de te donner ma vision des choses. Sans doute pas la meilleure car je ne suis malgré tout pas un professionnel d'Excel non plus!

A+

Rechercher des sujets similaires à "stockage automatique donnees date donnee"