Problème de boucle en vb

mada11 Messages postés 7 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 21 octobre 2005 - 21 oct. 2005 à 08:21
mada11 Messages postés 7 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 21 octobre 2005 - 21 oct. 2005 à 16:07
bonjour à tous,

j'ai réalisé une macro permettant de "découper" un gros classeur excel en d'autres plus petits.
Le gros classeur contient une colonne numero.
il est demandé à l'utilisateur de choisir un numero.
j'ai fait une boucle qui permet de savoir si la valeur choisi par l'utilisateur est présente dans la colonne.
si c'est le cas, les données du gros classeur concernant cette valeur sont transmises à un classeur pus petit
.
or dans la boucle, un nouveau classeur se crée et les données concernant une même valeur se retrouvent chacune dans un classeur différent...
comment faire pour que les données concernant une même valeur se retrouvent dans un même classeur?
voici le code de la macro :

Dim valeur As Integer
Dim i As Integer
Sub recap()
valeur = InputBox("valeur:", "val", "")
Set nf = Workbooks("rrr.xls").Worksheets("recap")
For i = 2 To 4
If nf.Cells(i, 1) = valeur Then
nom = nf.Cells(i, 2)
prenom = nf.Cells(i, 3)
repas = nf.Cells(i, 4)
total = nf.Cells(i, 5)
Workbooks.Add
ActiveCell.Offset(0, 1) = nom
ActiveCell.Offset(0, 2) = prenom
ActiveCell.Offset(0, 3) = repas
ActiveCell.Offset(0, 4) = total
End If
Next
ActiveWorkbook.SaveAs Filename:=(valeur) & "_" & (ThisWorkbook.Name)
End Sub

merci d'avance...

2 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
21 oct. 2005 à 09:34
Pour faire ce que tu dis tu doit enlever Workbooks.Add de ta boucle

Dim valeur As Integer
Dim i As Integer
Sub recap()
valeur = InputBox("valeur:", "val", "")
Set nf = Workbooks("rrr.xls").Worksheets("recap")
Workbooks.Add
For i = 2 To 4
If nf.Cells(i, 1) = valeur Then
nom = nf.Cells(i, 2)
prenom = nf.Cells(i, 3)
repas = nf.Cells(i, 4)
total = nf.Cells(i, 5)
ActiveCell.Offset(0, 1) = nom
ActiveCell.Offset(0, 2) = prenom
ActiveCell.Offset(0, 3) = repas
ActiveCell.Offset(0, 4) = total
End If
Next
ActiveWorkbook.SaveAs Filename:=(valeur) & "_" & (ThisWorkbook.Name)
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
mada11 Messages postés 7 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 21 octobre 2005
21 oct. 2005 à 16:07
merci à toi
ça marche super bien....

cordialement

mada11
0
Rejoignez-nous