Problème en vb

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

nous devons réaliser une macro permettant de découper un classeur excel en autres plus petit.
Le gros classeur contient une colonne numero.
il est demandé à l'utilisateur de choisir un numero.
nous avons 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.
malheuresement seule la première ligne concernant cette vzleur est copiée.
comment faire pour récuperer toutes les données concernant la valeur donnée par l'utilisateur?

merci d'avance.

4 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
20 oct. 2005 à 09:04
Première chose : placez ici le code qui vous permet de faire le
"découpage", çà nous aidera à comprendre où vous avez fait une erreur.

Ca ressemble à un problème de boucle. Avec le code associé, on trouvera surement le problème.


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
mada11 Messages postés 7 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 21 octobre 2005
20 oct. 2005 à 11:47
voici le code :

Dim valeur As Integer
Dim i As Integer

Sub recap()
valeur = InputBox("valeur:", "val", "")
For i = 1 To 2
If Cells(i, 1) = valeur Then
nom = Cells(i, 2)
prenom = Cells(i, 3)
repas = Cells(i, 4)
total = 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
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
20 oct. 2005 à 11:56
découpons la boucle i=1 to 2 :





i=1



If Cells(i, 1) = valeur Then

nom = Cells(i, 2)

prenom = Cells(i, 3)

repas = Cells(i, 4)

total = 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



tout se passe bien.

A la sortie du If, un nouveau classeur a été créé et quelques cases ont été initialisées.

D'après vous, quel est le classeur actif à la sortie du IF ?



Réponse : il s'agit du classeur que vous venez de créer.



Quand vous revenez une deuxième fois dans le FOR (i=2)



If Cells(i, 1) = valeur Then

nom = Cells(i, 2)

prenom = Cells(i, 3)

repas = Cells(i, 4)

total = 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



le code va chercher si Cells(2,1) vaut valeur dans le classeur actif

Bien entendu, la condition ne sera pas validée puisque vous ne cherchez
pas dans le bon classeur. Il faut réactiver le premier classeur Excel.






Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
mada11 Messages postés 7 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 21 octobre 2005
21 oct. 2005 à 08:07
merci manu,
maintenant la recherche s'effectue dans le bon classeur.
mais il reste encore un problème à régler.
en effet à chaque passage 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...

merci encore pour ton aide
mada11
0
Rejoignez-nous