Copier lignes autant de fois que de valeurs

bridelisse

XLDnaute Nouveau
Bonjour,
Etant novice sur VBA, je parcours depuis un moment le forum à la recherche d'une réponse. D'habitude, je trouve sans trop de difficultés, mais étant donné l'urgence, je décide de lancer un nouveau topic.
Disons que j'ai trouvé en partie ma réponse grâce à une précédente discussion à savoir (https://www.excel-downloads.com/threads/copier-ligne-autant-de-fois-que-de-valeurs.87708/).

A savoir que c'est exactement la même problématique (voir le fichier Classeur 1 posté par Papaye), sauf que dans mon cas, j'ai besoin d'obtenir 2 résultats en plus.

dans 2 nouvelles colonnes (qui se créent et qui devront s'appeler disons "Description" et "Nombres", il faudrait que la valeur et le titre de la colonne trouvée soit collés à chaque fois qu'il y a une ligne qui se copie dans l'étape d'avant.

Un exemple sera plus simple:

- Voici le tableau de base dans la feuil 1

nom a b c d e f g nature comptable montant aa bb cc dd ee cotisations x
toto toto toto toto toto toto toto toto toto 1 2 3 4
titi titi titi titi titi titi 1 2 3
tutu tutu tutu 1 2

- le résultat en activant la macro de Papaye dans la feuil 2 :

nom a b c d e f g nature comptable
toto toto toto toto toto toto toto toto toto
toto toto toto toto toto toto toto toto toto
toto toto toto toto toto toto toto toto toto
toto toto toto toto toto toto toto toto toto
titi titi titi titi titi titi
titi titi titi titi titi titi
titi titi titi titi titi titi
tutu tutu tutu
tutu tutu tutu

- le résultat que j'aimerai en plus pour la macro toujours dans la feuil 2:

nom a b c d e f g nature comptable Description Nombre
toto toto toto toto toto toto toto toto toto montant 1
toto toto toto toto toto toto toto toto toto aa 2
toto toto toto toto toto toto toto toto toto bb 3
toto toto toto toto toto toto toto toto toto cc 4
titi titi titi titi titi titi montant 1
titi titi titi titi titi titi aa 2
titi titi titi titi titi titi bb 3
tutu tutu tutu montant 1
tutu tutu tutu aa 2

J'ai mis ci -joint le fichier avec le résultat souhaité en jaune (+ les 2 colonnes)

En espérant que ça soit assez clair.

Merci de votre aide,

Bridelisse
 

Pièces jointes

  • Copier lignes autant de fois que de valeurs2.xlsm
    20.8 KB · Affichages: 54

Misange

XLDnaute Barbatruc
Re : Copier lignes autant de fois que de valeurs

Bonjour

pour ma part je n'ai strictement rien compris :(
Ne t'occupe pas du fichier de papaye et dis nous ce que tu souhaites dans ton fichier exactement.
C'est quoi ce tableau de sortie ou les colonnes ne correspondent pas aux précédentes (les entêtes de colonnes ne sont pas sur la même ligne...)
montants et nombres se rapportent à quoi exactement ?
c'est quoi tes toto titi tutu qu'on retrouve dans toutes les colonnes ? ce sont les mêmes toto titi tutu ou ce sont des choses différentes ? c'est bien de simplifier mais là c'est incompréhensible, en tous cas pour moi.
 

Modeste

XLDnaute Barbatruc
Re : Copier lignes autant de fois que de valeurs

Bonjour bridelisse et bienvenue,
Salut Misange :)

Misange a raison (au cas où il serait nécessaire de préciser :D) ... mais comme j'ai cru comprendre la demande et que j'y ai travaillé, je dépose tout de même.
J'ai conservé cetraines variables (pour que tu ne perdespas tes "points de repères" éventuels), mais me suis permis de modifier les portions de code où des boucles pouvaient être évitées (ceci dit, on peut encore sans doute simplifier, mais voyons déjà si j'ai compris??)
VB:
Sub toto()

Copier_depart = 1

Copier_Fin = Application.Match("nature comptable", Range("1:1"), 0)
Nb_debut = Application.Match("montant", Range("1:1"), 0)
Nb_fin = Application.Match("cotisations x", Range("1:1"), 0)

Set f = Sheets("Feuil2")
f.Cells.Clear
Range(Cells(1, 1), Cells(1, Copier_Fin)).Copy f.Cells(1, 1)
f.Cells(1, Copier_Fin + 1) = "Description"
f.Cells(1, Copier_Fin + 2) = "Nombre"
x = 2
For i = 2 To Range("A65536").End(xlUp).Row
  Nb_Fois = Application.WorksheetFunction.Count(Range(Cells(i, Nb_debut), Cells(i, Nb_fin)))
  Range(Cells(i, 1), Cells(i, Copier_Fin)).Copy f.Range(f.Cells(x, 1), f.Cells(x + Nb_Fois - 1, Copier_Fin))
  Range(Cells(1, 10), Cells(1, 10 + Nb_Fois - 1)).Copy
    f.Range(f.Cells(x, 10), f.Cells(x + Nb_Fois - 1, 10)).PasteSpecial Transpose:=True
  Range(Cells(i, 10), Cells(i, 10 + Nb_Fois - 1)).Copy
    f.Range(f.Cells(x, 11), f.Cells(x + Nb_Fois - 1, 11)).PasteSpecial Transpose:=True
  x = x + Nb_Fois
Next i

End Sub
 

bridelisse

XLDnaute Nouveau
Re : Copier lignes autant de fois que de valeurs

Bonjour Misange et Modeste,

Vous avez été très réactifs, moi pas, je n'ai pas eu accès à un ordi hier, mais j'attendais de tester le code proposé par Modeste avec impatience ce matin.

@ Misange : Mon problème n'a pas été super simple, étant donné que je faisais référence à une discussion résolue antérieurement, du coup, mon exemple, avec les tutu, titi et toto, était dans le mauvais format une fois posté, mais en plus incompréhensible, si tu n'avais pas ouvert cette fameuse discussion résolue par Papaye par son fichier.

@ Modeste : tu as super bien géré ma problématique et proposé un code qui marche du feu du dieu, c'est exactement ça que je voulais et j'aurais jamais trouvé toute seule ! +1


Bonne journée et bon we
 

Modeste

XLDnaute Barbatruc
Re : Copier lignes autant de fois que de valeurs

Bonjour,

@bridelisse: je suis ravi que ça fonctionne ... cette fois, mais c'est l'éternel problème ... il peut arriver que quelqu'un comprenne le problème posé ... ou pas ;)
Comme disait l'autre: "ce qui se conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément" ... l'inverse est vrai aussi, je pense: se forcer à exprimer les choses de manière qu'un autre puisse les comprendre ... ouvre parfois des pistes de solutions.

A un de ces jours
 

Discussions similaires

Réponses
2
Affichages
511

Statistiques des forums

Discussions
312 149
Messages
2 085 777
Membres
102 973
dernier inscrit
docpod