RESOLU Macro pour récupérer des données sur autre feuille avec critère commun

chris6999

XLDnaute Impliqué
Bonjour le FORUM

Toujours sur mon projet de suivi d'activité qui avance à grand pas à votre aide.

Je bloque sur un problème que j'ai essayé de résoudre en m'inspirant des codes qui m'avaient déjà été transmis via ce Forum mais sans succès.

Je suis dans une fiche (feuille Fiche SAISIE).
J'ai une cellule où je peux sélectionner le nom de l'agent G2
J'ai une cellule où je saisis une date de journée K2
Et pleins de cases à remplir colonne C, I, M

Le principe :
Lorsque pour un agent, je valide en K2 une date déjà connue dans la colonne A de la feuille Agent, un userform me demande ce que je souhaite faire (bon ça c ok).
- Choisir une autre date : ok jusque là pas de problème
- Faire remonter dans ma Fiche SAISIE les données correspondant à la même date dans ma feuille agent.
C'est là où je coince....

J'ai essayé le code suivant mais j'obtiens une erreur 424...

Private Sub CommandButton2_Click()
If Target.Address = "$K$2" Then
'soit c= cherche dans la feuille Agent1 colonne A (la colonne où se trouve la valeur recherchée soit égale à K2)

Set c = Sheets("Agent1").Columns("A").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole) 'voir aide a Find et aussi FindNext (bien que pas utilisé ici)
' si l'on a trouvé
If Not c Is Nothing Then
'remplit les champs données salarié
' C33 = valeur de la première colonne après A
Range("C33") = c.Offset(0, 1)
Range("C35") = c.Offset(0, 2)
Range("I33") = c.Offset(0, 3)
Range("I35") = c.Offset(0, 4)
Range("M33") = c.Offset(0, 5)
Range("M35") = c.Offset(0, 6)

End If
End If

End Sub

Je suis sûre que cela ne tient pas à grand chose mais vu mon niveau VBA ce petit rien est une montagne.

Si quelqu'un ne profite pas de l'été indien ce dimanche...
 

Pièces jointes

  • TEST fiche RECHERCHEV.xls
    177 KB · Affichages: 29
Dernière édition:

john

XLDnaute Impliqué
Re : Macro pour récupérer des données sur autre feuille avec critère commun

Salut,
Tu obtiens une erreur car target n'est pas connue dans ton userform !!!
Pour remédier à ça, tu dois déclarer une variable en public hors de ta sub dans la feuil1 (ex public adresse), dans ta sub "Private Sub Worksheet_Change(ByVal Target As Range)" tu donnes la valeur de target.address à adresse (adresse=target.address).
Ensuite dans ta sub "Private Sub CommandButton2_Click()" sur ton userform1 tu compares "If Feuil1.adresse = "$K$2" Then" à la place de "if target.address" et là tu n'auras plus l'erreur 424.
Dans ta commande find, n'oublie pas de changer le target.address par feuil1.adresse "Set c = Sheets(feuille).Columns("A").Find(Feuil1.adresse, LookIn:=xlValues, lookat:=xlWhole)".

Voilà en principe tu devrais arriver à tes fin avec ça, mais faudra mettre au point tes conditions pour copier les bonnes données au bon endroit.

Bon week end.

John
 

chris6999

XLDnaute Impliqué
Re : Macro pour récupérer des données sur autre feuille avec critère commun

Re John

Je suis un peu perdue

Je ne sais pas ce que comment déclarer une variable en public dans ma sheets 1.

Ensuite je crois que je saurais faire

Si tu peux me donner juste la manière de présenter ma déclaration de variable.

Merci d'avance






Dans ma feuille 1 je peux m

Salut,
Tu obtiens une erreur car target n'est pas connue dans ton userform !!!
Pour remédier à ça, tu dois déclarer une variable en public hors de ta sub dans la feuil1 (ex public adresse), dans ta sub "Private Sub Worksheet_Change(ByVal Target As Range)" tu donnes la valeur de target.address à adresse (adresse=target.address).
Ensuite dans ta sub "Private Sub CommandButton2_Click()" sur ton userform1 tu compares "If Feuil1.adresse = "$K$2" Then" à la place de "if target.address" et là tu n'auras plus l'erreur 424.
Dans ta commande find, n'oublie pas de changer le target.address par feuil1.adresse "Set c = Sheets(feuille).Columns("A").Find(Feuil1.adresse, LookIn:=xlValues, lookat:=xlWhole)".

Voilà en principe tu devrais arriver à tes fin avec ça, mais faudra mettre au point tes conditions pour copier les bonnes données au bon endroit.

Bon week end.

John
 

chris6999

XLDnaute Impliqué
Re : Macro pour récupérer des données sur autre feuille avec critère commun

Bonsoir le FORUM

Suite aux conseils de John j'ai :

Déclarer dans un module séparé ma variable "Public Adresse As Currency"

Dans ma sub Private Sub Worksheet_Change j'ai ajouté "Adresse = Target.Address"
Dans le code CommandButton2_Click() j'ai remplacé "If Target.Address = "$K$2" Then" par "If Feuil1.Adresse = "$K$2" Then"
Puis j'ai mis Feuil1.Adresse
Set c = Sheets(feuille12).Columns("A").Find(Feuil1.Adresse, LookIn:=xlValues, lookat:=xlWhole)
à la place de
Set c = Sheets("Agent1").Columns("A").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)

Bon ben voilà après toutes ces modifs je n'ai plus de blocage 424 par contre je me retrouve avec un code erreur 13 sur la variable Adresse = Target.Address

J'avoue être arrivée au bout de mes capacités qui c'est vrai sont vraiment fort limitées...

Si quelqu'un a une solution à me proposer.

Merci d'avance
Cordialement
 

Pièces jointes

  • TEST RECHERCHEV 2ème version.xls
    178.5 KB · Affichages: 27

john

XLDnaute Impliqué
Re : Macro pour récupérer des données sur autre feuille avec critère commun

Bonjour,

Sorry de pas avoir donné de nouvelle plus tôt, mais pas vraiment eu le temps...

Voilà ton fichier modifié...

Bonne journée.

John
 

Pièces jointes

  • recherchev-2eme-version.xlsm
    165.4 KB · Affichages: 37

chris6999

XLDnaute Impliqué
Re : Macro pour récupérer des données sur autre feuille avec critère commun

Bonjour John

Merci d'avoir répondu. Par contre le fichier joint ne semble pas fonctionner et sauf erreur de ma part, je ne vois pas de changements au niveau du code.
En attendant j'ai travaillé en matricel. Ce n'est pas très propre mais ça fonctionne.

Merci pour ton aide
Bonne journée




Bonjour,

Sorry de pas avoir donné de nouvelle plus tôt, mais pas vraiment eu le temps...

Voilà ton fichier modifié...

Bonne journée.

John
 

john

XLDnaute Impliqué
Re : Macro pour récupérer des données sur autre feuille avec critère commun

Bonjour,

Le changement est que, j'ai déplacé la déclaration de public adresse dans ta feuille et plus dans le module1, ensuite tu avais l'erreur erreur 13 sur la variable Adresse = Target.Address, donc dans ton code (bouton2_click) où tu utilisais Target.Address, j'ai remplacé par feuil1.adresse pour ne plus avoir l'erreur 13 vu que Target.Address n'est pas connu dans l'événement click du bouton !!!! c'est pour cela qu'il faut déclarer la variable adresse en public pour pouvoir t'en servir en utilisant feuil1.adresse.

J'ai fait ce que tu demandais... Maintenant je ne sais pas ce que ton programme doit faire par la suite, je ne suis pas devin non plus...

Dans le dernier fichier que j'ai téléchargé ici, tu dis avoir changé target.address par feuil1.adresse, mais quand je vais dans le code, rien n'est modifié et l'erreur venait de là...
Voilà le copié/collé du code qu'il y avait dans le fichier
Set c = Sheets("Agent1").Columns("A").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
Tu peux voir que dans mon fichier, la modification est faite... faut peut être bien regarder avant de dire qu'il n'y a aucune différence entre ton dernier fichier et le mien...
Déjà que je fais mon possible pour t'aider, mais je ne suis pas là pour me faire critiquer que soit disant j'ai rien fais sur le fichier...

Je ne viendrai pas pendant qq jours car je rentre à l'hosto....

Bonne fin de semaine.

John
 
Dernière édition:

chris6999

XLDnaute Impliqué
Re : Macro pour récupérer des données sur autre feuille avec critère commun

Bonjour John

Je reviens après quelques jours d'absence car en déplacement.

Je suis très surprise de constater que mon dernier commentaire ait pu être interprété comme une critique.
Ce n'était pas le cas je peux t'en assurer.
C'est vrai que je n'avais pas vu les modifications apportées et je m'en excuse encore.
En aucun cas je ne me permettrais de juger le travail fait par les intervenants du FORUM.

Encore merci pour ton aide
Courage pour l'hosto. J'espère que ce n'est pas trop grâve.

Cordialement










Bonjour,

Le changement est que, j'ai déplacé la déclaration de public adresse dans ta feuille et plus dans le module1, ensuite tu avais l'erreur erreur 13 sur la variable Adresse = Target.Address, donc dans ton code (bouton2_click) où tu utilisais Target.Address, j'ai remplacé par feuil1.adresse pour ne plus avoir l'erreur 13 vu que Target.Address n'est pas connu dans l'événement click du bouton !!!! c'est pour cela qu'il faut déclarer la variable adresse en public pour pouvoir t'en servir en utilisant feuil1.adresse.

J'ai fait ce que tu demandais... Maintenant je ne sais pas ce que ton programme doit faire par la suite, je ne suis pas devin non plus...

Dans le dernier fichier que j'ai téléchargé ici, tu dis avoir changé target.address par feuil1.adresse, mais quand je vais dans le code, rien n'est modifié et l'erreur venait de là...
Voilà le copié/collé du code qu'il y avait dans le fichier
Set c = Sheets("Agent1").Columns("A").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
Tu peux voir que dans mon fichier, la modification est faite... faut peut être bien regarder avant de dire qu'il n'y a aucune différence entre ton dernier fichier et le mien...
Déjà que je fais mon possible pour t'aider, mais je ne suis pas là pour me faire critiquer que soit disant j'ai rien fais sur le fichier...

Je ne viendrai pas pendant qq jours car je rentre à l'hosto....

Bonne fin de semaine.

John
 

Discussions similaires

Réponses
7
Affichages
349
Réponses
2
Affichages
152
Réponses
7
Affichages
327

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 184
dernier inscrit
Di Martino