Voilà je voudrais savoir si il est possible de lancer une recherche dans un classeur à partir du rèsultat afiicher dans InputBox ?
Je m'explique : j'ai classeur dans lequel je rentre des clients .Je voudrais pouvoire crée une copie de la fiche clients est l'envoyer dans autres classeur qui contient des fiches similaire, mais rèparties sur trois feuilles diffèrantes.
L'endroit où seras collè la copie est à la suite de la "refclient " tapez dans un InputBox .
Je joint un dossier contenant :
1) le classeur nomé "program.Xls" (exemple pour le forum) dans lequel se trouve le dèbut d'une macro à complèter et que j'ai essayè (sans succés) de faire fonctionner .
2) Un classeur nomé "model.Xls" qui contient le model de fiche à copier
3) un classeur nomé "tournée.Xls" qui contient des fiches rèpartie sur 3 feuilles pour exemple et pour les essais de macro de recherche . je voudrais que le collage se face par l'instruction "inserer les cellules copiées" plus un "dècalage vers le bas " .
Pour rèsumer se que je souhaites voici un exemple :
Je rentre un nouveau client qui pour Refclient "C121" quand ton click sur le bouton l'imputBox s'affiche est me demande de "taper une refClient" : qui sera donc "C065" (par exemple)quand je fais ok ,cela lance une macro qui ouvre le classeur "Tournéeé" recherche la fiche qui porte la refclient taper.
Une fois trouver la macro ouvre le classeur model copie la fiche est va l'inserer à la fin de la fiche trouvée .
Pour la fin je pourrais terminée les dernières lignes du program .
Espèrant avoir ètè claire dans ma demande, je vous remercie par avance pour le coup de mains et reste à votre disposition pour toutes questions qui vous serez util . Amicalement BR44
For i = 1 To Wb1.Sheets.Count
Set x = Wb1.Sheets(i).Cells.Find(Mavariable, , xlValues, xlWhole, , , False)
If Not x Is Nothing Then
Wb1.Sheets(i).Range(x.Offset(-2, -5), x.Offset(29, 5)).Clear
MsgBox "La feuille client à ètè suprimer"
End If
Next i
Oui avec ta version ,cela efface le dèbut de la feuille suivante en ne comblant pas l'espace effacer doù le "Delete" au lieu de "Clear" ,et pour ce qui est le nombre de ligne je suppose que le decompte se fait de la manière suivante :
Il conte 26 ligne à partir de la refClient trouver + les deux lignes situèes au-dessus + la ligne en court se qui donne : 26+2+1=29 lignes le compte est bon
J'aurais juste une dernière petite question : Dans ta macro tu ecris :
For i= 1 To Wb1.Sheets(i).Count au lieu de For i= 1 To 3
Es-ce pour des raisons technique du program où pour le simplifier ?
Sur ce je te dis à bientôt sans ômetre de te remercier vraiment beaucoup pour le coup de main . Très Amicalement Br 44
afin de boucler la recherche sur toutes les feuillles du classeur. En l'occurence, il y en a 3, mais si jamais pour une raison x, tu décidais de modifier ton classeur, qu'il y en ait une en moins ou une en plus, tu n'aurais pas à modifier le code, la recherche s'éffecturait sur la totalité des feuilles.
Content de voir que tu t'impliques vraiment dans tes projets, tu cherches à comprendre et avant de reposer une question, tu cherches à adapter par toi même les codes donnés... c'est pas la première fois que je le remarque... continues dans cet esprit, c'est une très bonne façon d'avancer.
Je tiens m'excuser du retard mis à rèpondre à ton dernier message pour lequel je te remerçie, mais je suis en pleine addaptation de ta macro .
J'essaye actuelemnt de mettre en place ta macro dans mon program principal et là ça beug .
la macro fonctionne jusqu'au la ligne suivante :
If Not x Is Nothing Then x.Offset(27, -5).Insert xlShiftDown, Wb5.Sheets("F.R.M").Range("1:29").Copy
Oui le program me dèclanche une erreur D'execution :-2147221080(800401a8) Erreur d'automation .
j'en est eu une au dèbut avec la boucle :"For i (remplace par z ,pour cause que le i est dèjà utiliser) = 1 to Wb6.Sheets.coutn par le mon nombre de feuille rèelles de mon classeur c'est-à- dire 3 .
Je me propose de t'envoyer un fichier mais je voudrais savoire si tu veux l'ensemble du program où juste la partie qui consernè par la macro ?
EN m'excusant de te dèranger à nouveau je te dis à plus su se fil . Amicalement BR44
le mieux serait un tout petit fichier avec le code "incriminé" mais reproduisant bien le problème... Si tu as remplacé le "for i" par "for z", as tu également bien remplacé le "next i" par "next z"...
je viens de tester tes macros, et pas de problème avec les fichiers fournis, maintenant si tu as placé le code dans un USF, préférable que tu fournisses le code qui pose problème, USF compris, car là en l'état pas facile de t'aider.
Je mets ci-joint un fichier contenant la macro complète de l'userform ,il se dècopose de la manière suivante :
Dans l'Userform:le program de l'userform qui se dèclanche par les touche "CRT+a"
J'ai mis 6 feuilles de classeurs représants les liaisons avec les diffèrants classeurs mensionés dans le program
A noter : je n'est pas modifié la macro par rapport aux feuilles du classeurs .
Espèrant que cela te convienne et te remerciant par avance je te dis à plus sur se fil ,èvidament si tu as besoin d'explications je suis à ta dispositions pour y rèpondre. Amicalement BR 44
1er problème, lorsque que je remplis, la "textbox" "RefClient", l'événement change se produit et bogue sur "Sheets("Feuil1").", cette feuille n'existant pas dans le fichier joint... remplacer "feuil1" par le nom de la feuille en question, avoir pour la suite... Attention aux noms d'objet.
Pierrot 93,dèsolè pour les beugs èventuels ,mais comme je le dis dans mon message précédent je n'est pas pris le temps de modifier la macro par rapport au classeur fourni .
Il faut mêtre feuille1 à la place de "C.Xls"
Pour les feuilles 2,3 ,4 Ce sont des classeurs qui contiennent chaqu'uns 12 feuilles et qui corespondent aux douze mois de l'année .
Ce qui donne :
1-Feuille1
2,3,4-Janvier
5-Model est à ramplacé par ("F.R.M")
6-tournées qui à 3 feuilles dont la premère se nome "TournéeCentreVille"
J'ai procèder ainsi pour cause de poids, si j'avais mis tous les classeurs qui corespondent je n'aurais pas put poster le fichier .
Maintenant si tu veux l'ensemble il faut que je passe par un liens internet . pour le beug qui nous conserne il se trouve dans la dernière partie du bouton valider au niveau de la phrase que j'ai poster prècèdemmant et qui est :
If Not x Is Nothing Then x.Offset(27, -5).Insert xlShiftDown, Wb5.Sheets("F.R.M").Range("A1:F29").Copy
Voilà espèrant que mon exlication te conviennent je te dis à plus . Br44
If Not x Is Nothing Then x.Offset(27, -5).Insert xlShiftDown, Wb5.Sheets("F.R.M").[B][COLOR="Red"]Range("1:29").[/COLOR][/B]Copy
pas testé, mais essaye peut être :
Code:
If Not x Is Nothing Then x.Offset(27, -5).Insert xlShiftDown, Wb5.Sheets("F.R.M").Rows("1:29").Copy
@+
Edition : A noter, je ne suis pas sur que tu veuilles insérer tes ou ta cekllule(s), 27 lignes plus bas et 5 colonnes à gauche, vérifies au préalable si c'est possible...