Copier/coller incrémenté autre classeur

Bonjour,

J'ai créer un tableau de recette pour ma cuisine.

Ce tableau permettra de sélectionner les recettes avec des modifications de quantités, et le petit plus serait de pouvoir ajouter chaque recette sélectionnée pour l'ajouter a un nouveau tableau "liste de course".

J'ai réussi a créer une macro pour alimenter un autre fichier "liste de course".

Le soucis que je rencontre et de pouvoir incrémenter chaque recette sélectionnée a la suite des autres recettes déjà ajouter dans mon fichier "liste de course"

Sub liste_de_course_6()
Dim WbSource As Workbook ' Objet Workbook pour le classeur source.
Dim WbDest As Workbook   ' Objet Workbook pour le classeur destination.

Set WbSource = ThisWorkbook                                ' Classeur qui contient le code.
Set WbDest = Workbooks.Open("C:\chemin.xlsx") ' Ouvre le fichier destination.
        WbSource.Sheets("entree").Range("A1:E1,B4:B16,D4:E16").Copy
        Range("A3").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Range("A3").Select

'WbDest.Close SaveChanges:=True   '                          ' Ferme Démo2.xlsx en sauvegardant.
'WbSource.Activate'                                          ' Active le fichier source.

'Descend d'une ligne (mais reste dans la même colonne)
'Sinon recommence
Do Until IsEmpty(ActiveCell) = True
   ActiveCell.Offset(1, 0).Activate
Loop 'Copie en conservant uniquement le texte.

End Sub

Fichier en PJ

Salut Rafu,

Après que tu ai fais ton copier dans ton WbSource il te suffit d'aller sur ton WbDest et de détecter quelle est la dernière ligne non vide de ce classeur + 1

Donc :

WbDest.Activate 'On va sur ton classeur destination
x = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row  + 1 'On détecte la dernière ligne non vide + 1
Range("A" & x).Select 'On sélectionne la dernière ligne non vide + 1 
ActiveSheet.Paste 'On colle

Restant à ta dispo !

bonjour

mettre ton tableau "sous forme de Tableau"

ensuite 2 segments (ce sont des filtres visuels)

sert à voir une recette unique (c'est la recette ! )

ou bien plusieurs simuktanément (c'est ta liste de courses)

il ne faut donc qu'un unique onglet au lieu de 7, ou 8 avec la liste des courses

et pas de VBA, supprime tes macros.

ultra simple, ultra rapide et très clair

note : si tu veux rendre les quantités modulables en fonction du nombre de convives, c'est immédiat (ajouter une case "nbre invités" et faire des multiplications).

soyons fous : je viens de l'ajouter en jaune

amitiés

le vrai problème vient du fait qu'on veut imiter avec VBA ce qu'on fait sur papier avec un crayon : on recopie sur d'autres feuilles. Et on finit par utiliser VBA.

en informatique on trie, on filtre et le tour est joué. Pas de VBA

Un grand merci pour votre aide et retour rapide

Etant extrêmement débutant en VBA, j'essaye de m'y mettre, mais j'avoue avoir encore du mal avec le systeme de hiérarchisation des formules.

@juice :

Je ne vois pas ou coller ce morceau de code

@jmd :

La mise ne forme du tableau est vraiment top, par contre comment transférer chaque recette sur une liste de course ?

L'idée est vraiment de pouvoir selectionner toutes les recettes dont j'ai besoin pour ma prestation, et les transferer sur une liste de course.

Avec en sus la possibilité de regrouper et trier les ingredients (Tableau dynamique)

En relisant, et farfouillant un peu, j'ai réussi à intégrer le code.

Je suis maintenant gène par le fait que je copie systématiquement 12 lignes, alors que mes recettes n'en contiennent pas toute 12.

Je suis maintenant gène par le fait que je copie systématiquement 12 lignes, alors que mes recettes n'en contiennent pas toute 12.

La faute à cette ligne là :

WbSource.Sheets("entree").Range("A1:E1,B4:B16,D4:E16").Copy

Tu demande à Copier toujours la même plage (D’ailleurs sa fonctionne comme méthode de sélection?)

Mettons que ce que tu souhaite copier ce trouve en colonne A

Alors :

WbSource.Activate
x = Sheets("entree").Range("A" & Rows.Count).End(xlUp).Row 
Sheets("entree").Range("A1:A" & x).Copy

A toi de l'adapter à tes plages

Alors oui cela fonctionne, mais cela ne me copie que les plages selectionnées.

Mon code n'est donc pas adapté à un nombre de ligne différent.

J'ai essayé ton code, mais il ne me copie pas ce que je souhaite

@jmd :

La mise ne forme du tableau est vraiment top, par contre comment transférer chaque recette sur une liste de course ?

L'idée est vraiment de pouvoir selectionner toutes les recettes dont j'ai besoin pour ma prestation, et les transferer sur une liste de course.

Avec en sus la possibilité de regrouper et trier les ingredients (Tableau dynamique)

re

on ne "transfère" rien

avec les segments, on choisit les recettes voulues. les courses sont maintenant affichées, avec toutes les infos nécessaires

as-tu essayé ?

note : tu peux trier ce que tu vois avec les boutons gris qui figurent dans la ligne du haut

un unique onglet pour tout faire ! et aucun VBA

je te remets le fichier

Le soucis est que je n'ai pas toujours le meme nombre de personnes.

Il s'agit plus d'un tableau de production pour mes cuisiniers et mes prestations de la semaine.

as-tu ouvert mon fichier, voir la cellule jaune

Oui bien sur, mais dans ton fichier, je ne peux pas selectionner une quantité d'un plat, et une quantité différente d'un autre plat, pour la meme liste.

Ou alors je n'ai pas saisi le mode d'emploi

ta phrase était incomplète :

"Le soucis est que je n'ai pas toujours le meme nombre de personnes." pour chaque plat

voici, hyper simple

saisir dans jaune, et les calculs sont en gris

amitiés

Rechercher des sujets similaires à "copier coller incremente classeur"