[VBA] Créer plusieurs lignes en fonction des valeurs

Bonjour à tous,

Jusqu'à présent, nous utiliser un fichier manuellement pour détailler les inscriptions. Nous recevons un fichier où une ligne = une inscription.

Mais, pour la même inscription, il peut y avoir plusieurs coûts, celui des livres en plus de l'inscription.

L'idée serait de partir des données reçues (A1:K5) et d'en générer quelque chose ressemblant à (A15:K28) dans une autre feuille. J'ai laissé délibérément quelques colonnes vides car je viendrais peupler cela avec d'autres informations.

Quelqu'un a une idée? Utiliser des formules devient trop complexe notamment parce qu'il faut créer plusieurs lignes à partir d'une seule ligne. Mes tentatives avec la fonction "Decaler" n'ont mené à rien (fort probable que je n'ai pas compris cette fonction).

Quelqu'un à le courage de nous aider? (fichier ci-joint)

Grand merci par avance.

image
13inscriptions.xlsx (12.84 Ko)

Bonjour

Dans le tableau des élèves, ne faut t'il pas une ligne montant en fin de tableau plutot qu'une colonne?

Comment les livres 3 et 4 peuvent être de prix différents selon l'élève ?

Bonjour,

Le livre 3 et 4 existe en plusieurs variantes (type de reliures + autres). Raison pour laquelle nous utilisons un tableau de "mapping". En fonction du code utilisé dans la colonne correspondante, on va chercher le prix y relatif. Exemple, si dans la colonne G s'affiche le code BBB222, on va chercher la valeur correspondante de 15€.

Mais je comprends votre commentaire, lorsqu'on dit Livre3 dans la colonne K, on ne voit pas a quelle variante cela fait référence. On partait du principe que selon le choix, la personne est au courant de quelle variante il s'agit. Mais effectivement cela mériterait d'être plus clair. Limite on pourrait indiquer "Montant pour livre 3 *right(G2;3)*" -> Incluant dans le descriptif les 3 derniers caractères du code affiché en colonne F et G.

Merci beaucoup

Hello,

Un essai tu cliques sur Actualiser sur ton onglet source

@+

Hello Baroute78,

Un très grand merci. Cela fonctionne parfaitement!!!!!

Pourrais-tu stp m'indiquer, dans l'éventualité ou je devrais changer la colonne statut pour qu'elle affiche ce que tu as prévu + les 3 premiers caractères du code "BBB111" car je trouve que le commentaire de scraper est pertinent.

vStatut = "Montant pour " & Sheets(Sheet_Source).Cells(1, Colonne).Value & left(Sheets(Sheet_Source).Range("G:G");2)

Encore merci de faire vivre cette communauté d'entraide. Grandement apprécié!

Hello,

Sur la ligne suivante :

Sheets(Sheet_Cible).Range("K" & Nb_Ligne_Cible) = vStatut 

Il faut la remplacer par

Sheets(Sheet_Cible).Range("K" & Nb_Ligne_Cible) = vStatut & " " & Left(Sheets(Sheet_Source).Cells(Ligne, Colonne).Value, 3)

N'hésite pas si besoin :)

@+

Edit : voici le fichier avec la modification

Bonjour à tous,

Une variante avec tableaux structurés........à tester....

17inscriptions.xlsm (25.03 Ko)

Cordialement,

encore merci Baroute.

@xorsankukai : ca fonctionne parfaitement aussi. Merci beaucoup! Me voici avec 2 solutions qui vont me servir pour la suite aussi. J'espère juste pouvoir être capable de rajouter livre 5, livre 6, lorsque le besoin se présentera

Hello,

Hésite pas à revenir sur ce post quand ce sera le cas :)

@+

Rechercher des sujets similaires à "vba creer lignes fonction valeurs"