Test et boucles

Bonsoir à tous,

J'ai un petit problème : je travaille sur un fichier excel que l'on m'a donné. Il est beau, mais très peu pratique pour extraire des données. Il s'agit de recette qui ont été organisée en colonne.

Je souhaiterai donc créer une macro qui copie colle les données sur un nouvel onglet.

Très précisément, je souhaiterai dire à ma macro :

Test en G6 si la cellule est vide dans l'onglet recette

Si elle est pas vide, copie de la cellule F6 à la cellule I6 (colonne n-1 à colonne n+2)

Puis vas copier cela en A2 d'un autre onglet (ex onglet BDD)

Puis tu reviens sur l'onglet recette, et tu te places sur la cellule du dessous (G7 de l'onglet recette)

Tu refais la même opération. La nuance étant que tu devras coller dans l'onglet BDD à la suite de ce qui a déja était écrit, soit en A3.

Enfin, lorsque tu tombes sur une cellule vide ( ex G10), alors tu retourne en ligne 6 et tu te décales de 3 colonnes (ce qui nous amène en J6)

En J6, tu refais la même opération, etc....

La macro s’arrête lorsqu' après s’être décalée de 3 colonnes et retourner en ligne 6 (ex M6), la cellule M6 est vide.

Voilà, j’espère avoir était clair. Je sais qu'il y a plusieurs façon de coder cela, notamment une façon plus légère (on copie colle toute la zone de F6 à I9).

Je suis preneur de toutes vos solutions,

Un grand merci,

Bonsoir,

Enfin, lorsque tu tombes sur une cellule vide ( ex G10), alors tu retourne en ligne 6 et tu te décales de 3 colonnes (ce qui nous amène en J6)

En J6, tu refais la même opération, etc....

Si tu refais la même opération, tu vas donc copier de la cellule I6 à la cellule L6 (colonne n-1 à colonne n+2).

La première copie ayant été réalisée de la cellule F6 à la cellule I6 (colonne n-1 à colonne n+2), tu as donc une recopie de la cellule I6 et idem ensuite pour L6, O6, R6, etc ...

C’est bien cela ?

Tu devrais joindre un fichier exemple, ça aidera les intervenants.

A+

Oui c'est parfaitement cela !

A part qu'en fait c'est de 4 colonnes qu'il faut se déplacer (my mistake !)...mais c'est un détail : Cela nous amène du coup en en K6, et il faut copier

de J6 à M6 etc.....

Je joins un fichier tu as raison, ça sera quand même un peu plus facile...

J'ai inséré un onglet BDD attendue, qui est en fait la forme que je souhaite. Si la macro fonctionne, c'est comme ca que je souhaite qu'elle ré organise mes données.

Cordialement,

22test-macro.xlsx (18.57 Ko)

Bonjour,

Une proposition

18test-macro.xlsm (29.36 Ko)

A+

Je te confirme Frangy, à priori ça fait le café !!

Je vais jeter un coup d'oeil à tes lignes, puis si je vois un petit souci auquel j'aurai pas pensé... je te dirai !

Merci bien en tout cas !!

Oups, j'ai parlé un peu trop vite.

En fait je ne suis pas sur que la macro test bien la colonne G.

Je m'explique, si jamais j'écris dans la colonne F (par exemple en F14 et F15 j'écris Féroce) et qu'il n'y a pas d'ingrédients en G14 et G15, la macro va me copier dans l'onglet BDD 2 lignes vides.

J’espère ne pas t'avoir perdu : c'est bien la présence d'ingrédient qui détermine la zone à copier coller, et non la présence d'un plat.

Je cherche de mon côté, je pense que c'est pas très compliqué à partir du code que tu m'as donné...mais comme je suis plutot limité en VBA...si tu vois n'hésite pas !!

En tout cas merci, c'est une très bonne base !

Voilà, en bidouillant j'ai trouvé.

Je te remercie grandement pour ton aide, précieuse.

La communauté VBA excel est au top !

Frangy, je vais encore avoir besoin de toi...parce que la je sèche complet, je ne saurai même pas quoi dire à la macro.

Dans l'onglet BDD, je souhaiterai que dans la colonne E vienne s'inscrire le nombre de personne pour la recette, inscrit lui dans l'onglet recette. Or, ce nombre est directement dépendant de la recette.

Exemple dans mon fichier ci-joint.

Pour le féroce d'avocat, je souhaiterai que vienne s'inscrire sur BDD en colonne E le nombre 6 aussi longtps que féroce est écrit en colonne A.

Puis lorsqu'on passe à minibokit dans BDD colonne A, c'est le chiffre inscrit sur l'onglet recettes en M21 qui doit venir s'inscrire en colonne E etc...

Je sais même pas si il faut macro, ou si il existe une fonction...

Help me please !

Bonsoir,

J'ai juste rajouté la copie du nombre de personnes dans la procédure existante.

A+

Merci, ca à l'air parfait...par contre tu m'as perdu sur ta ligne de code...

Histoire d'apprendre un peu, si tu veux bien m'expliquer "la philosophie" de ce que tu as demandé à la macro...

Si tu n'as pas le tps, je comprends.

Et te remercie encore une fois, car le résultat est la !

L’essentiel se trouve dans la boucle For...Next.

On balaye les colonnes de G à BK par pas de 4.

Si la cellule de la ligne 6 n’est pas vide, on copie la plage qui contient les éléments associés au plat, puis on colle ces données dans la feuille BDD.

Pour l’ajout du nombre de personnes, il a suffit que j’intègre dans cette boucle l’affectation de ce nombre à la plage correspondante de la feuille BDD.

Si tu as besoin de précisions sur le code (ou des parties de code), n’hésites pas à me le demander.

A+

Ok, je te remercie.

En fait je n'avais pas la philosophie pour pouvoir copier le nombre de personne. Mais tu affectes ce nombre à une plage si je comprends bien.

Du coup, je vais regarder un peu le code maintenant que j'ai le fonctionnement...voir si j'arrive à comprendre un petit peu.

En tout cas encore merci,

A +

Rechercher des sujets similaires à "test boucles"