XL 2010 intégrer une liste de donnée à la suite (1ère case vide)

nernono

XLDnaute Nouveau
Bonjour,

Dans un premier temps je vous souhaite une très bonne année 2022 et un grand merci à ceux qui vont pouvoir m'aider.

j'ai fait une macro qui me permet de ventilé des données de la page "saisie" sur plusieurs pages "BDD"; "calcul"; "présentation".
actuellement la ventilation ce fait sur des case fixe et j'aimerais dans certains cas que celle ci se fasse sur la 1ère case libre après celle ayant déjà des données.
avec votre aide ( car je ne sait pas faire, à moins que vous m'expliquer), j'aimerais que cette ventilation ce fasse de la façon suivante :

la feuille saisie me sert pour entrée les données
  • sur la la feuille "BBD" qui me sert de base de donnée : il faudrait copier la liste des infos à partir de la case vide après "C1"
  • sur la feuille "calcul" : le collage est toujours sur la même colonne ( cette feuille me permet de faire un comparatif avec la semaine d'avant)
  • sur la feuille "présentation (2)" elle reprend en "B2" la colonne et en H2 la case vide pour une semaine.
en tous cas un grand merci de votre aide

voici ma macro :

Sub Macro9()
'
' Macro9 Macro
'

Range("B1:B26").Select
Selection.Copy
Sheets("BBD").Select
Range("C1").Select
ActiveSheet.Paste
Sheets("calcul").Select
Range("B2").Select
ActiveSheet.Paste
Sheets("présentation (2)").Select
Range("B2").Select
ActiveSheet.Paste
Range("B2").Select
Application.CutCopyMode = False
Selection.Copy
Range("H2").Select
ActiveSheet.Paste
Sheets("calcul").Select
Range("H2:J27").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("présentation (2)").Select
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("F3").Select
Range("F3:F27").Select
Application.CutCopyMode = False
Selection.Copy
Range("O14:R14").Select
Range("H3").Select
ActiveSheet.Paste
End Sub
'
 

Pièces jointes

  • Comptage journalier macro v2.xlsm
    37.1 KB · Affichages: 9
Solution
Collage special des valeurs pour , plus tire de la colonne h+ explications dans le code
Sub ventil()
Set zone = Sheets("saisie").Range("b1:b26") 'selection de la zone
zone.Copy Sheets("calcul").Range("b2") 'copie sur la feuille calcul
zone.Copy Sheets("présentation (2)").Range("b2") 'copy sur la feuille présentation
zone.Rows(1).Copy Sheets("présentation (2)").Range("h2") ' copy la première ligne de la zone dans présentation

colbdd = Sheets("BBD").UsedRange.Rows(1).Columns.Count 'détermine la dernière colonne utilisée
zone.Copy Sheets("BBD").Cells(1, colbdd + 1) ' copie la zone dans la feuille bbd

Set zone = Sheets("Calcul").Range("f3:f27") 'Nouvelle zone
zone.Copy...

sousou

XLDnaute Barbatruc
Bonjour
voilà ce que tu peux faire pour les trois premier points de ton problème, mais pas compris ce que tu souhaites en h2?
ATTENTION une colonne traine dans la feuille BDD colonne JR
Sub ventil()
Set zone = Sheets("saisie").Range("b1:b26")
zone.Copy Sheets("calcul").Range("b2")
zone.Copy Sheets("présentation (2)").Range("b2")
colbdd = Sheets("BBD").UsedRange.Rows(1).Columns.Count
zone.Copy Sheets("BBD").Cells(1, colbdd + 1)

End Sub
Au moin ca devrait t'inspirer
 

sousou

XLDnaute Barbatruc
D'abord éviter les activate et les select. Ca ne sert à rien, seul l'enregistreur utilise cela, parce-qu'il note toutes vos manipulation. Donc quant on enregistre une macro, il faut ensuite supprimer toutes les choses inutiles.
Set zone, permet de mémoriser dans une variable une selection de cellules. avec toutes leurs propriétés.
Ensuite on copie cette zone au emplacement choisi (pour la feuille calcul :b2 ect...)
Pour trouver la première cellule vide,de la feuille bbd, je regarde le nombre de colonne utilisée sur la ligne 1 de la feuille ce qui me donne la prochaine colonne.

Attention, c'est ici simpliste, si il faut voir comment les feuilles peuvent évoluer.
Par exemple: comme c'était le cas dans ton fichier si une colonne traine au loin, ce sera elle qui tiendra lieu de référence
 

nernono

XLDnaute Nouveau
merci pour ces précision très clair et je vous en remercie .
petit demande supplémentaire (si possible):
j'aimerais qu'apparaisse dans la fiche "présentation (2)" (en H2) le résume de la semaine ( du lundi au vendredi à la suite) en % que l'on retrouve dans la page "calcul" en F2;F27.
pensez vous que cela est possible ? si oui je suis preneur et vos explication me vont très bien.

encore merci
 

sousou

XLDnaute Barbatruc
Collage special des valeurs pour , plus tire de la colonne h+ explications dans le code
Sub ventil()
Set zone = Sheets("saisie").Range("b1:b26") 'selection de la zone
zone.Copy Sheets("calcul").Range("b2") 'copie sur la feuille calcul
zone.Copy Sheets("présentation (2)").Range("b2") 'copy sur la feuille présentation
zone.Rows(1).Copy Sheets("présentation (2)").Range("h2") ' copy la première ligne de la zone dans présentation

colbdd = Sheets("BBD").UsedRange.Rows(1).Columns.Count 'détermine la dernière colonne utilisée
zone.Copy Sheets("BBD").Cells(1, colbdd + 1) ' copie la zone dans la feuille bbd

Set zone = Sheets("Calcul").Range("f3:f27") 'Nouvelle zone
zone.Copy
Sheets("présentation (2)").Range("h3").PasteSpecial (3) 'collage special
End Sub
 

nernono

XLDnaute Nouveau
bonjour,
je vous renvoie le fichier pour lequel vous m'avez beaucoup fait avancer et pour lequel je vous remercie de l'aide apporter.
comme vous avez pu voir j'ai rajouter un page BDD %. mais quand je transfère les données, il me transfère les fonctions et non pas le résultats avec la mise en forme d'origine.

j'ai deux requêtes supplémentaires:
  • la fonction que je me sert pour rajouter automatiquement un jour (en fin de nettoyage de la feuille SAISIE) ne fonctionne pas. auriez vous une idée de l'erreur que j'ai commise ?
  • comment puis-je faire pour que dans la feuille calcul j'ai automatiquement les chiffres de la journée de référence qui apparaisse ( a savoir jour de donnée - 8 jours) et ainsi pouvoir automatisé les calculs et l'afficher dans ma feuille PRESENTATION . en colonne D2
un grand merci pour votre aide
 

Pièces jointes

  • Comptage journalier macro v6.xlsm
    37 KB · Affichages: 4

sousou

XLDnaute Barbatruc
Bonjour
1/
si tu as bien lu mon message, lorsque tu veux coller des valeur, il faut faire un paste special
dans ton cas tu fait un paste specail de valeur, puis des format pour avoir les %
' copie la zone dans la feuille bbd
zone.Copy
Sheets("BDD %").Cells(1, colbdd + 1).PasteSpecial (-4122)
Sheets("BDD %").Cells(1, colbdd + 1).PasteSpecial (-4163)
2/ Ta date n'est pas en b2, mais en b1. de plus dans le fichier ce n'est pas une date mais du texte saisie une date
3/Pas tout com^pris ou vas-tu chercher j-8
 

nernono

XLDnaute Nouveau
bonjour,
pour le jour de référence, en fait je voulais faire une comparaison en chiffre et en % d'une semaine à l'autre.
je vais cherchez les chiffres de la semaine d'avant que je positionne en CALCUL C2 pour faire les calculs et après en affichage en PRESENTATION D2
 

sousou

XLDnaute Barbatruc
Voila ce que j'ai compris.
J'ai tout repris dans la macro ventil
1 / copie de la zone de la feuille saisie (valeur et format)
dans: BDD en fin de colonne
dans: présentation en colonne 2 et en fin de colonne
dans: Calcul en colonne2
2/ copie de la zone% (feuille calcul colonne e)
dans: Presentation en fin de colonne
dans:BDD% en fin de colonne
3/ copie de la référenec j-8 prise dans BDD
dans Calcul colonne c.
A analyser
 

Pièces jointes

  • Copie de Comptage journalier macro v6-1.xlsm
    40.6 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 966
Membres
101 852
dernier inscrit
dthi16088