[Résolu] Dates avec un décalage automatique d'une semaine

Rebonsoir,

Est il possible de configurer une colonne de telle façon que lorsqu'on entre une date dans une cellule de la colonne concernée, si l'on étire la cellule alors les dates qui s'incrivent automatiquement dans les cellules étirées soient décalé d'une semaine, et non pas d'une journée ?

Bien sûr, je sais qu'il suffit de rentrer manuellement une date dans une ceullule ET manuellement une autre date décalé d'une semaine dans la cellule d'à côté et ensuite étirer les deux cellules d'un coup, mais moi je veux juste avoir à rentrer qu'une date, pas deux.

Salut le forum

En A1 ta date

En B1 =A1+7 à recopier vers la droite

Mytå

Non Myta. Je ne veux justement devoir écrire B1=A1 + 7

Tout le pb est justement que je veux juste écrire A1, et après étirer A1 et que les dates soient de semaine en semaine.

En tout cas merci pour ton aide

Re le forum

La solution du passereux, avec une macro sur la feuille (Si tu es débutant en plus...Oufs!)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Byte
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
For I = 1 To 10
Target.Offset(0, I) = Target + I * 7
Next I
End If
End Sub

Adapte la plage de copie ici 10 fois, changement à chaque modification de la cellule A1

Excel sait tout faire, sauf le café mais il n'est pas devin !

Mytå

Ok merci Myta, je vais regarder tout ça demain après midi là je vais aller me coucher.

Bonjour Arno, salut Mytå.

Une autre solution plus facile pour un débutant :

  • ta date en A1
  • tu sélectionne A1
  • Edition/Remplissage/Série
  • Série en : Colonnes ; Type : Chronologique ; Unité de temps : Jour ; Valeur du pas : 7
  • Dernière valeur : la dernière date que tu veux atteindre, pas nécessairement un "multiple de 7" par rapport à la première (je me comprends, soyez indulgents ). Si ça ne tombe pas juste, la série s'arrêtera à la dernière valeur juste, avant la dernière valeur indiquée.
  • tu valides, c'est magique !

Une fonction plutôt utile pour ne pas se faire chier à incrémenter des séries à la main, avec les déplacements d'écrans qui s'emballent et qui rendent fou

Edit : J'avais pas fais gaffe à la version 2007 (bien vu Mytå sur l'autre sujet )

Le chemin est sous l'onglet "Accueil"

Arnoparigo

Re le forum

Sylvain, je l'ai raté celle là, en plus il a Excel 2007.

Mytå

VOilà, je me poste enfin devant mon PC pour tester toutes vos solutions.

Déjà, une maccro, je n'en ai jamais utilisé de ma vie, et je sais à peine ce que c'est. Une sorte de petit programme qui définie l'exécution particulière d'une cellule dans une feuille, en gros ?

En tout cas, j'ai tenté de copié collé ton texte en créant un Maccro, et bien il ne se passe pas grand chose. Et les maccros sont bien activées. Je sais pas, j'ai du louper un épisode. Quand je rentre par exemple 1er sept en A1 ensuite si j'étire il me met 2 sept et non pas 8...

Je vais tester la deuxième solution pour voir.

Bon, j'ai testé. Ok, je vois le principe, mais ça ne me conviens pas.

En fait, ce que je veux (je crois que j'ai beaucoup de mal à m'exprimer) c'est pourvoir entrer N'IMPORTE QUELLE DATE manuellement dans N'IMPORTE QUELLE CASE d'une colonne donnée (imaginons la colonne A) et que si jamais je prend la cellule où j'ai rentré la date et que je l'étend à la main, les dates ainsi créées dans les cellules suivantes soient conditionnées selon un pas de 7 jours.

Je veux QU'UNE FOIS POUR TOUTE, la colonne A (ou une autre d'ailleurs) soit conditionnée de telle sorte que TOUTE dates rentrée dans une de ses cellules, si l'on étire le pas soit pas 1 jour mais 7.

Je ne sais pas si je m'exprime bien

A la limite, si dans la série à la place de définir une date buttoir on pouvais dire le nombre de fois que l'on veux multiplier la cellule selon un pas donné, ça serai déjà mieux.

Re le forum

La macro à mettre dans le code de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Byte
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
Range(Cells(1, 2), Cells(1, Range("IV1").End(xlToLeft).Column)).ClearContents
For I = 1 To InputBox("Nombre de cellule à recopier")
Target.Offset(0, I) = Target + I * 7
Next I
End If
End Sub

Tu ouvres Excel, ensuite Alt+F11, double click sur Feuil1 et copie le code

En modifiant la cellule A1 tu auras le remplissage automatique.

Mytå

?

Moi je vais dans "vue", puis je fais "nouvelle macro" puis là je donne un nom à la maccro, je fais "créer" puis je me retrouve dans la feuille d'édition de la maccro (enfin je présume). Là j' copie colle ton texte, je referme et puis ba rien.

Quand je fais control F11 j'ai bien le truc des maccros qui s'ouvre mais je vois pas ce que tu veux dire par "double clique ensuite sur ta feuille 1"...

Re le forum

Tu ne dois pas coller le code à la bonne place

Mytå

Bon OK, faut faire AltF11 PUIS ouvrir l'exploreur de projet (Control R) PUIS sélectionner la feuille en question pour voir les maccros qu'elle contient.

OK j'essayai comme un con depuis une feuille teste à moi en m'imaginant que la maccro allait s'apliquer à celle là. J'avais pas vu le coup du exploreur de projet pour mettre la maccro dans telle feuille du projet

EDIT

Je viens de tester, c'est pas mal du tout sauf que ça remplie par ligne et pas par colonne

Re le forum

Un fichier test qui recopie en colonne

https://www.excel-pratique.com/~files/doc/Arno_Recopie_Test.xls

Mytå

ça recopie toujours en ligne

Re le forum

Change le code pour celui-ci

Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Byte
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
Range("A2:A" & Range("A2").End(xlDown).Row + 1).ClearContents
For I = 1 To InputBox("Nombre de cellule à recopier")
Target.Offset(I, 0) = Target + I * 7
Next I
End If
End Sub

Attention Byte =255 lignes, Integer pour 32 768 lignes, Long pour 2 147 483 647 lignes

Mytå

Aaaaa bah on s'approche de ce que je veux

Ya pas à dire, faut que je me lance dans les rudiments de programmation de Maccro moi ^^

Alors, vu que je te sens lancé 8) , est ce qu'il te serai difficile de faire en sorte que cela puisse marcher si j'entre une date pas que dans la cellule A1, mais dans n'importe quelle cellule de la colonne A ?

Exemple, je renseigne la cellule A1, je met une date, avec la boite de dialogue que tu as créer, je met "4" par exemple. Je me retrouve avec les cellule A1 A2 A3 A4 et A5 remplies. ET bien imaginons maintenant que je veux repartir de la case A5 et indiquer à nouveau une date....

En fait que ton truc fonctionne pour n'mporte quelle cellule de la colonne A en fait

Je ne peux pas mieux expliquer pourtant. C'est exactement ce que tu as fait sauf que je ne veux pas que ce soit limité à A1, mais que ça puisse fonctionner depuis n'importe quelle cellule de la colonne A.

Si je renseigne la date de A1 que je dis que je veux 3 cellules remplies j'ai donc A2 A3 et A4 qui vont l'être. Et bien je veux pouvoir faire la même manip' depuis une autre cellule à la suite, par exemple en renseignant une date en A5, double clic dessus, dire le nombre de cellule à remplir, etc etc....

Salut vous deux,

Si j'ai bien compris, le code de Mytå modifié :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim I As Byte
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
For I = 1 To InputBox("Nombre de cellule à recopier")
Target.Offset(I, 0) = Target + I * 7
Next I
End If
End Sub
Rechercher des sujets similaires à "dates decalage automatique semaine"