Répétition ligne

vinceca Messages postés 2 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 4 octobre 2007 - 3 oct. 2007 à 18:21
vinceca Messages postés 2 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 4 octobre 2007 - 4 oct. 2007 à 18:34
Bonjour,

J'ai un souci de programmation  VB sur un fichier excel.

En fait, je dispose d'une base de donnée constituée de plusieurs lignes ayant chacunes des 3 paramètres répartis sur 3 colonnes.
Je souhaiterais créer une macro qui fixe une valeur précise à un des 3  paramètres. Lorsqu'une des lignes vérifie ce critère je souhaiterais alors copié cette ligne et la coller sur une autre feuille. Cependant, la ou je bloque, c'est que j'aimerais copier cette meme ligne plusieurs fois.
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> Exemple:
<v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock aspectratio="t" v:ext="edit">
Les paramètres pour chacunes des lignes sont le nom, le prénom et l'age d'un individu;
Il y a autant de lignes que d'individus
Et je souhaiterais par exemple lorsqu'un des individus à 20 ans, copier toute la ligne et la coller 10 fois dans une autre feuille. Lorsqu'il a 40 ans copier la ligne et la coller que 5 fois et ainsi de suite pour 5-6 ages différents.

Est ce que quelqu'un aura une piste svp???

Merci bcp</o:lock></v:shapetype>

2 réponses

Beetlejuice1988 Messages postés 13 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 13 décembre 2007 1
4 oct. 2007 à 11:07
Pour chaque ligne de ton tableau Excel d'entrée, tu range la ligne dans MyLine :

(Avec MyLine un tableau multidimensionnel contenant
MyLine(0) le Nom
MyLine(1) le prénom
MyLine (2) l'âge
)

Pour chaque ligne de ton fichier Excel :
If MyLine(2) = "20" then
    for i = 0 to 10
       AppendToOtherExcelSheet(Line, AutreFichierExcel)
    next
End If

If MyLine(2) = "40" then

    for i = 0 to 5

       AppendToOtherExcelSheet(Line, AutreFichierExcel)

    next

End If

etc...

Bisous
0
vinceca Messages postés 2 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 4 octobre 2007
4 oct. 2007 à 18:34
Merci pour tes infos !
En fait j'ai pas réussi a faire comme tu me l'avais conseillé mais j'ai réussi à trouver une autre méthode. En voici une partie:

For i = 1 To x


If Cells(i, 5).Value = "A" Then
Cells(i, 5).EntireRow.Select
Selection.Copy
Selection.Insert Shift:=xlDown
End If
Next
End Sub

Avec cette méthode, j'arrive bien à identifier le paramètre que je veux et à copier la ligne ou je veux, cependant il y a un petit bug dans la boucle. En effet, comme j'insère une ligne, la boucle, en passant à la ligne suivante, retombe sur la meme ligne qu'avant et donc la recopie indéfiniment !

Est ce que quelqu'un aurait un truc pour éviter que la boucle se morde la queue...

Merci bcp!
Bonne soirée
0
Rejoignez-nous