Macro pour recopier vers le bas

Bonjour a tous,

Je vous mets la macro que j'ai créer (il y a certainement plus simple mais pour le moment je m'en contente). Je souhaiterais que cette macro se recopier chaque jour dans le tableau en fonction de la date et que les dates se mettent les unes en dessous des autres.

J'ai essayer la fonction LastRw mais ça ne fonctionne pas.

Comment faire ?

Aurélien

Voici le code VBA

' MAJ Effectif
'

Sheets("Synthèse").Select
Range("A1").Select
Selection.Copy
Sheets("Recap").Select
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

If Range("B2") = "Midi" Then
d = 10
Else
End If

Sheets("Synthèse").Select
Application.CutCopyMode = False
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6

Range("Ab10:Ac10").Select
Selection.Copy
Sheets("Recap").Select
Range("C4:D4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

If Range("B2") = "Soir" Then
d = 10
End If

Sheets("Synthèse").Select
Application.CutCopyMode = False
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6


Range("Ab10:Ac10").Select
Selection.Copy
Sheets("Recap").Select
Range("f4:g4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub

9essai1.xlsm (63.88 Ko)

Bonjour Aurel8180,

Comment faut-il gérer la date si elle existe déjà dans le tableau de la feuille "Recap" ?

On ajoute une ligne quand même.
On écrase les données.
Ou on passe droit.

Aussi, doit-on avoir 2 lignes ? L'une Midi et l'autre Soir ... ou Midi et Soir sur la même ligne ?

bastr

Bonjour Aurel8180,

En attendant réponse à mes questionnements ... voici un premier jet.


bastr

Re bonjour,

Merci Bastr. Les dates dans le tableau "Recap" doivent se mettre automatiquement (donc vide a la base).

On doit avoir midi et soir sur la même ligne si possible sinon je m'adapterais.

Encore merci.

Bonjour Aurel81800,

Mais disons que tu exécutes la macro une fois le Midi, une 2e fois le Soir.

Si tu exécutes une autre fois la macro la même journée que fait-on ?
On écrase les données ? Ou l'on passe droit ?

bastr

Bastr,

La macro je vais l'exécuter une fois le matin et une fois l'après-midi.

Si elle est utilisé une seconde fois dans la demi journée en question, il faut qu'elle écrase les premières données.

Merci beaucoup

Bonjour Aurel81800,

Je crois que l'on s'approche du traitement demandé.

Teste la macro. Une fois la première ligne ajoutée dans la feuille "Recap", via la macro, recule la date de cette ligne ajoutée de la feuille "Recap" et exécute le code à nouveau. Ainsi tu pourras tester sur plusieurs lignes sans attendre au lendemain.

J'ai ajouté un champ nommé, c'est la cellule qui contiendra "juil-22" dans la feuille "Recap".

J'ai aussi ajouté une liste déroulante de choix pour la ligne B2 de la feuille "Synthèse". Les choix sont dans la feuille "Options" que tu pourras masquer.
Si tu n'aimes pas cette liste de choix : menu "Données" > section "Outils de données" > "Validation des données" > dans la fenêtre, en bas à gauche, bouton "Effacer tout".

Je n'ai pas géré le bouton bleu "Mettre à jour" de la feuille "Synthèse" ne sachant pas à quoi il sera destiné.

J'ai ajouté des commentaires dans les macros afin de suivre un peu son fonctionnement.

A+

bastr

Bonjour Bastr,

Merci beaucoup. Cela fonctionne correctement. Le bouton "Mettre a jour" sur la feuille synthèse sert a afficher automatiquement le menu en fonction de la date et du moment de la journée. Le matin (donc jusqu'à midi), en cliquant dessus, j'ai le menu qui correspond automatiquement au menu. Idem pour le soir. Le but est que en cliquant sur ce bouton "Mettre a jour", le menu ainsi que le tableau "Recap s'affiche et se remplissent automatiquement.

Je viens d'essayer de copier les macros dans le module "Mettre a jour" mais rien ne se passe au niveau tu tableau "Recap".

A+

Aurélien

Bonjour Aurel81800,

Tu as peut-être zappé le bout où j'ai mentionné ...

J'ai ajouté un champ nommé, c'est la cellule qui contiendra "juil-22" dans la feuille "Recap".

C'est la cellule A4 de la feuille Recap. Ce champ nommé "SommeJeune" est essentiel au fonctionnement de la macro.

Les formules seront insérées automatiquement.

bastr

Bonjour Bastr

Ton fichier fonctionne parfaitement seulement lorsque je le copie dans le module du bouton "Mettre a jour" de la page "Synthèse", le tableau "Récap" ne se rempli pas.

Peut être que je ne le mets pas au bon endroit.

Il me marque qu'il y a une "erreur de compilation"

Je met le nouveau lien.

Aurélien

Bonjour Aurel81800,

Dans la déclaration des variables, Adr et lnf2 sont considérés "Variant" car non typés.

Toujours dans la déclaration des variables, & au lieu de As Long et ! au lieu de As Single, sont de vieilles façons de déclarer des variables ... cela fonctionne encore pour la compatibilité de code écrit sur de vieilles versions d'Excel. Il serait préférable d'utiliser la nomenclature plus récente (as single, as double, as integer, etc.).

Le blocage provenait de : Call Module2.BorduresRecap.
Tu as déplacé le code pour bordure dans le même module que le reste.
Il faut donc simplement enlever "Module2." pour n'avoir que Call BorduresRecap.

Cellule A1 de la feuille Synthèse, il faut faire la différence entre "AUJOURDUI" = la date et "MAINTENANT" = la date et l'heure.
Dans ce cas-ci, je crois que "AUJOURDHUI" et plus approprié, car en incluant l'heure, au moment de la vérification si la date existe dans Recap, l'heure n'étant pas la même, une ligne sera ajoutée au lieu d'avoir "Midi" et "Soir" sur la même ligne.

Si tu voulais que la macro "MettreAjour" appelle automatiquement "MAJEffectif", il suffit d'ajouter au bas de "MettreAjour", juste avant "End Sub"

Call MAJEffectif

J'ai testé et cela fonctionnerait bien.

Un dernier point, dans la feuille Synthèse et B2, que tu écrives : midi, Midi, MIDI peut importe la macro va gérer ... idem pour SOIR.

En espérant que le code fonctionne mieux.

bastr

Bastr

Merci beaucoup de ton aide c'est ce que je souhaitait.

Bonjour Aurel81800,

Excellent, c'est donc la bonne "Recette" ...

bastr

Bastr

Oui c'est ça, mdr

Re bonjour Bastr

Je te redérange mais en cellule A1 que je mette AUJOURD'HUI ou MAINTENANT, a chaque fois il y a un ajout de ligne. Peut on le changer ou non dans la macro ?

Ne pas se prendre la tête si on peut pas j'adapterais les autres calcul que je doit faire a partir de cette feuille.

Merci beaucoup

Bonjour Aurel81800,

Je viens de comprendre ...

Je t'ai parlé, plus avant, de la différence entre Aujourdhui() et Maintenant() ...

En A1 de la feuille "Synthèse", c'est Maintenant() = date et heure. Le code apportait donc aussi l'heure dans les cellules de la feuille (Recap), d'où l'ajout de ligne à chaque exécution.

J'ai vu que tu te sers de Maintenant pour changer la cellule B2 : Midi ou Soir.

J'ai donc modifié le code ... au lieu de copier la cellule A1 de la feuille "Synthèse dans les cellules de la feuille (Recap), je fais écrire "Date", lequel donne la date du jour sans les heures.

Donc le problème est résolu, ça semble fonctionner correctement. J'ai aussi testé en changeant l'heure de ma machine pour avoir "Soir", car ici à l'ouest de l'Atlantique, c'est encore le matin ... et ça fonctionne toujours bien.

Je te laisse vérifier tout cela au cas où j'aurais oublié quelque chose.

bastr

Merci Bastr

J'essaie ça et je mes des nouvelles demain soir (travail oblige)

Encore merci

Bonjour,

Parfait ça fonctionne niquel

Milles merci

Aurélien

Bonjour,

ric

Rechercher des sujets similaires à "macro recopier bas"