[Excel] Problème avec "Cells.Find"

Résolu/Fermé
NarcisseJulien Messages postés 27 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 25 juin 2011 - Modifié par NarcisseJulien le 22/06/2011 à 15:55
NarcisseJulien Messages postés 27 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 25 juin 2011 - 23 juin 2011 à 08:35
Bonjour,

Je me retrouve face a un problème avec mon code vba d'une maccro visant à rechercher une valeur dans la colone G de la feuil1 (nommé Janvier), copier les lignes contenant cette valeur (tjr dans la colone G) et ensuite coller ces ligne à partir de la ligne 13 dans une feuil2 (nommée pièces).

La valeur recherchée est donc mise dans la celule D7 de la feuil "pièces"
Je lance la maccro via une userform situé dans cette feuil "pièces"
J'éffectue un comptage de cette valeur dans la colone G de la feuil "janvier"
Je stok cette information dans une variable "k"
Puis je fait une boucle allant de 1 à k pour chercher et copier les lignes contenants la valeur cherchée (dans la colone G) dans ma feuil pièces et ce à partir de la ligne 13.

Mon problème... ça fonctionne pas et j'arrive pas à voir où ça bloque...


Voici le code VBA que j'execute :


Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 22/06/2011 par Narcisse Julien
'

j = Range("D7").Value
Sheets("Janvier").Select
k = Application.CountIf(Range("G1").EntireColumn, j)

For i = 1 To k

Cells.Find(What:=j, After:=ActiveRow, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

Sheets("Pièces").Select

Rows(12 + i & ":" & 12 + i).Select
ActiveSheet.Paste
Next i

End Sub

Si qu'elqu'un a une petite idée de comment m'aider ... Je vous remerice par avance pour votre aimabilité.


A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 22/06/2011 à 16:47
Bonjour

Sub xxx()
With Sheets("janvier")
     donnee = .Range("D7")
     nbre = Application.CountIf(.Columns("G"), donnee)
     If nbre = 0 Then GoTo erreur:
     
     Application.ScreenUpdating = False
     lig = 65536
     For cptr = 1 To nbre
          lig = .Columns("G").Find(donnee, .Cells(lig, "G"), xlValues).Row
          Sheets("pieces").Rows(12 + cptr) = .Rows(lig).Value
     Next
End With
Exit Sub

erreur:
MsgBox "valeur inconnue", vbCritical
End Sub

Michel
2
NarcisseJulien Messages postés 27 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 25 juin 2011 1
22 juin 2011 à 19:00
Merci enormément ^^
Je vais tester tous ça =)
0
NarcisseJulien Messages postés 27 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 25 juin 2011 1
22 juin 2011 à 19:29
Ca me fait toujours une erreur... je sens bien que c'est pas loin =S mais je vois pas d'où l'erreur vient.
Dans mon test donnee = 4864
Nbre=3
Lig=65536
xlvalues= -4163
cptr=1
0
NarcisseJulien Messages postés 27 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 25 juin 2011 1
22 juin 2011 à 19:33
[url=http://www.images-host.fr][img]http://www.images-host.fr[/img][/url]

[url=http://www.images-host.fr][img]http://www.images-host.fr[/img][/url]

Voici des SS de l'erreur et du code executé...
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
22 juin 2011 à 22:52
Bonjour,

tu devrais plutôt déposer un fichier exemple sur cijoint.fr et coller ici le lien fourni.
eric
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
22 juin 2011 à 23:17
Salut, Eric, Ca va ? :o)

Peux tu m'expliquer pourquoi tu écris
j=range("D7").value
puis
donnee= j

j'avoue que je n'en vois pas du tout l'intérêt et l'utilité, surtout pour écrire en plus une variable à 1 caractère ( i, j, k sont tolérés dans les boucles et encore!...) :o((

J'avais mis l'appel en D7 de sheet "janvier"
donc il fallait écrire
donnee = Sheets("pieces").Range("D7")
With Sheets("janvier")
     nbre = Application.CountIf(.Columns("G"), donnee)


J'ai testé c'est OK
https://www.cjoint.com/?3Fwxq13QHdX
0