VBA regroupement par lot avec boucle et variable

Moof

XLDnaute Nouveau
Bonjour,

Etant débutant et n'ayant pas réussi à avancer depuis 2 jours je fais appel à vos talents VBA:

Je dois rapprocher deux types de données qui peuvent varier en nombre et que je regroupe par lot.
Le lot1 par exemple serait composé de n individus qui possèdent chacun n objets
Si le lot1 a 5 individus qui ont chacun 10 objets lot1, je souhaite mettre dans une autre feuille excel l'individu 1 du lot1 avec en dessous (+ insertion d'une ligne pour espacer) ses 10 objets lot1, puis l'individu 2 et en dessous les 10 objets lot1 etc...

Même chose pour tous les autres lots d'individus et d'objets. Un individu aura forcément un objet en terme de numéro de lot.

La première colonne = Lot individu, la 2ème = individu, la 3eme = lot objet, la 4ème = objet

J'ai essayé de coder en utilisant un nombre si pour avoir le nbre d'individus et d'objets par lot, ce qui me permet d'envisager (je ne sais pas coder ça) un compteur n individus pour le nombre de fois ou je collerai le bloc de n objets (les lignes étant récupérés par le nb si pour faire une selection du bloc).

J'imagine qu'il faudrait un code type For each range objet coller copier avec une boucle for next...Mais je bloque, pour la suite de mon travail, je ne peux passer par un TCD.

Pouvez vous m'aider?

Par avance, un grand merci!
 

Moof

XLDnaute Nouveau
Re : VBA regroupement par lot avec boucle et variable

salut Papou,

J'ai bien avancé sur mon petit projet d'automatisation en utilisant ton code au début du programme, même si j'avoue ne pas comprendre ta partie qui me dépasse en terme de logique. Je me suis ensuite débrouillé autrement pour coller le résultat sur un autre onglet. Je me demandais comment faire autrement qu'un "while" (tant que) pour insérer un objet nommé objet0 au dessus de chaque objet1...

Merci pour la V2!

Bon we!
Moof
 

Paritec

XLDnaute Barbatruc
Re : VBA regroupement par lot avec boucle et variable

Bonjour moof le forum
je ne comprend pas quelle difficulté tu as eu pour copier le résultat dans une autre feuille
au lieu de feuil1.range("A1").resize etc tu écrivais par exemple feuil4.range("C15") et le début de ton tableau était en C15 de la feuille 4 ou sheets("XXXX").range("C5") si tu voulais utiliser le nom de l'onglet XXXX
si tu veux tu repasses le fichier avec les explications et on va modifier
a+
Papou:eek:
 

Moof

XLDnaute Nouveau
Re : VBA regroupement par lot avec boucle et variable

Salut,

J'essaye de faire fonctionner une boucle toute bête qui partirait du bas d'un tableau dont la ligne varie jusqu'à avoir atteint la cellule F29 mais ça ne marche pas, la boucle continue jusqu'à la ligne 1...Vous auriez une idée de ce qui bloque?
Merci,
Moof


lignefin = Range("F65536").End(xlUp).Row
Range("F65536").Select
i = lignefin
While Cells(6, i) = Cells(6, 30)
Selection.End(xlUp).Select
Selection.End(xlUp).Select
ActiveCell.Offset(-1, 0).Select
ActiveCell.FormulaR1C1 = "=+R[1]C"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=+R[1]C"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "PR__PA"
ActiveCell.Offset(0, -2).Select

Wend
 

Paritec

XLDnaute Barbatruc
Re : VBA regroupement par lot avec boucle et variable

Bonjour Moof le forum
et le fichier il est ou?? tu me connais je ne répond jamais sans fichier oui je sais je suis casse pieds mais bon
Pour ta boucle tous tes .selects ils ne servent à rien, ou alors je vais apprendre pleins de choses avec toi !!!!:p
a+
papou:eek:
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : VBA regroupement par lot avec boucle et variable

Re Bonjour Moof le forum
c'est quoi ton histoire de boucle
tu as vu ce que tu as écrit???
Code:
i = lignefin
    While Cells(6, i) = Cells(6, 30)
tu cherches la dernière ligne et tu écris cells(6,i) as tu compris ce que tu fais , non cela ne fait aucun doute
quand tu écris cells(6 c'est la 6ème ligne, et i la colonne) est-ce bien ce que tu voulais????
a+
papou:eek:
 

Moof

XLDnaute Nouveau
Re : VBA regroupement par lot avec boucle et variable

Salut Papou :)
Ben oui je le concède, j'ai confondu colonne et ligne...

Je suis parvenu à trouver tout seul la solution avec une autre synthaxe.
Range("F65536").Select





If ActiveCell.Row = 30 Then Exit Sub

top:
Selection.End(xlUp).Select

Selection.End(xlUp).Select
ActiveCell.Offset(-1, 0).Select

ActiveCell.FormulaR1C1 = "=+R[1]C"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=+R[1]C"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "PR__PA"
ActiveCell.Offset(0, -2).Select




If Not ActiveCell.Row = 30 Then GoTo top


C'est gratifiant d'arriver à faire fonctionner le bouzin, même si c'est du ultra basique ;-)
Bonne journée
Moof
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin