Déplacement de sélection dans le temps

Bonjour,

Etant une bille en VBA, je voudrai savoir si quelqu'un pouvez m'aider à faire un déplacement de cellule dans le temps. (en auto. bien sur).

Pour ce faire, j'ai créer un petit exemple sous excel 2003.

Mon but est de déplacer la sélection rempli aujourd'hui en F2 et F3 et le lendemain à partir minuit en F2, F3, ceci ce retrouve alors en E2 et E3 ainsi de suite jusqu'à B2 et B3.

Vu que ma limite des valeurs possible à rentrer pour mon tableau ce trouve en colonne B (B2- B3). Je voudrai que les valeurs de la colonne soient effacées pour laisser place au valeur de C2, C3 et qui eux seront effacées le lendemain etc...

En gros, un système d'incrémentation jour par jour.

Le truc c'est que j'utilise pour les dates la fonction =aujourd'hui en F1 et en E1 =aujourd'hui-1 et ainsi de suite jusqu’à B1. Donc pour le déplacement de date, j'ai une solution mais pour le reste je suis dans le flou. J'utilise peut être pas la bonne technique pour les dates. Vous pouvez me corriger si il y a moyen de simplifier ou de mettre tout en VBA ou non.

Cordialement un grand débutant,

Bonjour,

Tu pourrais commencer par tester la macro suivante

Sub TestDéplacement()
    Range("C2:G3").Copy Destination:=Range("B2")
End Sub

Merci,

Je test dans la semaine.

Lepetitbob a écrit :

Merci,

Je test dans la semaine.

Bonjour,

Si ton test n'est pas concluant, il ne faut pas hésiter à revenir poster sur le Forum ...

Test concluant plus ajout d'une petite modification. 8) (rien avoir avec mon fichier test)

Range("I17:I21").Copy Destination:=Range("H17:H21")
Range("I17:I21").ClearContents

Par contre pour activé ma macro à heur fixe, j'utiliserai bien:

Private Sub Workbook_Open()
    Application.OnTime TimeValue("17:36:40"), "Test"
End Sub

Mais apparemment, il faut que le fichier excel soit forcément ouvert, ce qui n'est pas forcément le cas. Et je pensai au week-end quand je serai absent, il faudra que la macro s’effectue quand même. Donc la je suis perdu.

Il y a t-il une autre technique pour activer ma macro à chaque changement de jour et à heur fixe? (heur fixe non obligatoire, parce que changement de jour, dit minuit).

Une précision mon fichier est sur un disque réseau (server) donc jamais éteint. J'ai juste un raccourcis sur le PC. Donc cela ce trouve...... j'en sais rien mais je vais test demain. Je suis pas sur mais rien ne ce passera car le fichier n'est pas ouvert mais stocker. Enfin qui ne tente rien n'a rien.

Cordialement,

Bonjour,

Content que cela fonctionne ...

Au sujet de ta nouvelle question, nous quittons le monde d'Excel pour entrer dans celui de Windows sur ton Serveur ... avec les droits Administrateur ... pour pouvoir être autorisé à utiliser Task Scheduler ...

Pour ton info ... par exemple

Je pense que ceci va être trop compliquer.

Donc j’appelle a l'option manuelle avec un petit bouton qui est déjà créer sur ma feuille. (avec ajout fonction date dans la macro) Bouton qui fonctionnera un peu comme un rafraîchissement.

Exemple:

Sub Test()

Range("I17:I21").Copy Destination:=Range("H17:H21")
Range("I17:I21").ClearContents

Range("J17:J21").Copy Destination:=Range("I17:I21")
Range("J17:J21").ClearContents

Range("K17:K21").Copy Destination:=Range("J17:J21")
Range("K17:K21").ClearContents

Range("L17:L21").Copy Destination:=Range("K17:K21")
Range("L17:L21").ClearContents

Range("M17:M21").Copy Destination:=Range("L17:L21")
Range("M17:M21").ClearContents

Range("I10:I15").Copy Destination:=Range("H10:H15")
Range("I10:I15").ClearContents

Range("J10:J15").Copy Destination:=Range("I10:I15")
Range("J10:J15").ClearContents

Range("K10:K15").Copy Destination:=Range("J10:J15")
Range("K10:K15").ClearContents

Range("L10:L15").Copy Destination:=Range("K10:K15")
Range("L10:L15").ClearContents

Range("M10:M15").Copy Destination:=Range("L10:L15")
Range("M10:M15").ClearContents

Range("I4:I8").Copy Destination:=Range("H4:H8")
Range("I4:I8").ClearContents

Range("J4:J8").Copy Destination:=Range("I4:I8")
Range("J4:J8").ClearContents

Range("K4:K8").Copy Destination:=Range("J4:J8")
Range("K4:K8").ClearContents

Range("L4:L8").Copy Destination:=Range("K4:K8")
Range("L4:L8").ClearContents

Range("M4:M8").Copy Destination:=Range("L4:L8")
Range("M4:M8").ClearContents

Range("M2") = Date

End Sub

Mais ceci marche que si je n'appuie pas plusieurs fois sur le bouton.

La date ne bouge pas mais ma sélection de cellule va ce déplacer dans le temps si j'appuie plusieurs fois sur le bouton.

Comment limiter le déplacement de mes cellules si ma date n'a pas changer?

Bonjour,

Pour un coup de pouce qui te soit directement profitable, ... il faudrait joindre ton fichier ...

Yop désolé oubli de ma part.

Re,

Merci pour le fichier ...

Dès que j'ai un petit moment ... je plonge dans ta macro ...

Re,

Une version simplifiée de ta macro test() ... qui... comme son nom l'indique ... devrait être testée ...

Merki,

Sympa la simplification. (j'ai pas tout comprit mais bon ceci marche correctement )

Par contre, il faut que je rajoute une commande qui ne va pas être facile à expliquer.

Alors en fonction de la date ou j'ai enregistrer le fichier et la date ou j’appuie sur bouton, il peut y avoir une différence de quelques jours (ex: le week end). Donc la date va bien ce mettre si je l'ouvre le lundi mais le déplacement de mes valeurs dans les colonnes ne sera pas en conséquence.

exemple:

Vendredi 06/02/15, j'actualise ma feuille et en fermant elle s'enregistre avec la date du jour.

Je reviens le Lundi 09/02/15 j'actualise ma macro en appuyant sur le bouton la date s'actualise mais la différence de 3 jours ne déplace pas de 3 colonne vers la gauche mes valeurs.

Donc la macro devra ce déplacer en fonction de la différence de jour (9-6=3) et est limiter au nombre d'appui consécutif pour déplacer dans le temps les valeurs qui on étaient validées un jour certain.

Cordialement,

Re,

De rien ...

Content que cela t'aide ...

Au sujet de la périodicité de la mise à jour ... as-tu prévu de stocker l'historique des mises à jour ou pas ...???

Enfaite je pense que l'archivage serait le top. Car, il n'y pas que ce fichier. Un fichier pour chaque équipe différente et chaque machine différente. Le tout est vue dans un fichier excel supervision en lien avec le fichier actuel. Le fichier supervision je l'ai pas actuellement sur moi mais je peux essayer de te le joindre pour demain.

Peut être, peut être que...

Il faut que je regarde mon fichier supervision pour savoir comment il prends les données sur ma feuille d'entretient. Car cela ce trouve, il n'y a pas besoin d'archivage.

La par contre, je sais pas faire pour l'archivage. Si j’avais la forme pour tenter de l'écrire pour m'exercer mais on verra demain.

Je vois demain.

Cordialement,

Re,

Si tu prévois l'archivage ... il ne faudra pas oublier de stocker la date ... qui permettra, avec le jour de la semaine, de valider tes "déplacements" de plage ...

Bon je regarde ce week end pour mon supervision. Sinon est ce que c'est possible de faire suivre la colonne (la partie qui bouge de ma macro) en fonction de la date d'écriture et la date ou j'active ma macro avec mon bouton?

Exemple: Pour la dernier fois que j'ai actualiser mon fichier et utiliser ma macro c'était le 20/02/15. J'ouvre de nouveau mon fichier le 23/02/15 pour actualiser mon travail. Je réactive ma macro pour mettre à la date et mes valeurs rempli ce déplace en fonction du jour ou elles sont écrits donc toujours dans la colonne du 20/02/15.

En gros, les valeurs du 20/02/15 reste dans la même colonne et quand j'active ma macro, l'ensemble ce déplace vers la gauche pour respecter ma ligne de date ( comme une frise chronologique). Au lieu de faire un déplacement tout bête de colonne par colonne.

Cordialement,

Bonjour,

Au risque de me répéter, ce que tu demandes ne deviendra possible que si tu mets en place l'archivage ... car ton fichier conservera la date de la dernière mise à jour ... et pourra donc effectuer l'ajustement ...

C'est justement ce que j'ai essayé de t'expliquer dans ton dernier message ...

Bon j'ai regarder de plus prés ma feuille excel de supervision. Elle utilise juste la valeurs des synthese de travaux (-1, 0, 1) pour afficher un feu tricolore. (orange pour -1, rouge pour 0 et vert pour 1).

Enfaîte vue mon fichier supervision qui n'est pas au même format (nombre de colonne pour une année et etc..), Il y a juste à copier la valeur de la cellule M6, M13 et M19 sur mon supervision au bon emplacement et à date précise.

Bon il faut que je modifie un peu la formule l'histoire d'avoir la valeur que quand les cellules si référents sont remplis et non pas à demi remplies sinon les valeurs de copie ou d'archivage ne seront pas bonne. Une fois une valeurs afficher dans les cases M6, M13 et M19 juste une macro de copie date à date des valeurs suffit ( ex: pour dimanche 15: début de poste en OV5, fin de poste en OV34 et hebdomadaire en OV63 sur le supervision). Une idée de comment faire?( juste pour la copie date à date du fichier test vers le supervision et la formule j'y réfléchi)

Bon par la suite, un archivage simple (sans mise en forme) dans un nouveau tableau sera un plus. L'histoire de garder qui à fait quoi et à quelle date.

PS: Autre chose n'active pas la macro bouton, il faut que je la modifie pour ne pas déplacer la ligne de synthèse des travaux.

Cordialement,

Je réfléchi et j'ai commencé à écrire ceci:

Sub ARCHIVER()

Dim wbk_distant As Workbook
Set wbk_distant = Application.Workbooks.Open("C:\Users\thomas\Desktop\Supervision Maintenance 1er Niveau Test")
wbk_distant.Sheets(1).Cells(1, 1).Value = ThisWorkbook.Sheets(1).Cells(1, 1).Value

 Range("M6").Select
    Selection.Copy
    Windows("Supervision Maintenance 1er Niveau Test.xlsx").Activate
    Sheets("Feux plieuses").Select
    Range("PI5").Select 'Modification: mettre à la bonne date

    Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

End Sub

Par contre au lieu de dire copie la valeur et colle la bêtement sur une case, il me faudra un bout de code pour dire tu te copie sur la colonne de ta date d'écriture. (voir mon commentaire dans le code)

Comment faire?

merci,

Bonjour,

Avec le code suivant, tu dois surtout adapter l'instruction Match ... pour retrouver la bonne ligne ...

Sub ARCHIVER()
Dim wbk_actuel As Workbook
Dim wbk_distant As Workbook
Dim x As Integer

Set wbk_actuel = ActiveWorkbook
Set wbk_distant = Application.Workbooks.Open("C:\Users\thomas\Desktop\Supervision Maintenance 1er Niveau Test")

wbk_distant.Sheets(1).Cells(1, 1).Value = wbk_actuel.Sheets(1).Cells(1, 1).Value

    ' Identifier la ligne de la cellule dans le fichier de destination
    x = Application.Match(wbk_actuel.Range("M6"), wbk_distant.Range("PI1:PI100"), 0)

    wbk_actuel.Range("M6").Copy
    wbk_distant.Range("PI" & x).PasteSpecial Paste:=xlPasteValues

End Sub
Rechercher des sujets similaires à "deplacement selection temps"