Rechercher à partir d' un Inputbox

br44

XLDnaute Impliqué
Bonsoir le forum ,


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
 

Pièces jointes

  • essaisFichier.zip
    23.4 KB · Affichages: 80
  • essaisFichier.zip
    23.4 KB · Affichages: 84
  • essaisFichier.zip
    23.4 KB · Affichages: 80

br44

XLDnaute Impliqué
Re : Rechercher à partir d' un Inputbox

Bonjour au forum ,


Je suppose que mon message n'est pas claire dans se cas je m'en excuse .

je voudrais juste une rèponse à cette question:

Comment lancer une recherche dans un classeur de trois feuilles à partire du rèsultat de l'inputBox suivant ?:

Dim Mavariable AS string

Mavariable=Inputbox("Tapez la refClient:")

if MaVariable=""Then Excit Sub

voici les infos du classeur consernè .

Dim Wb1 As Workbook

Dim Chemin As String

Dim i As integer

Set Wb1=Workbooks.Open(chemin)


Chemin="C:\Documents and Settings\Rimmele\Bureau\essaisFichier\tournees.xls"

For i= 1 To 3

Wb1.Sheets(i)

Partie à complèter svp merçi

Voilà j'espère que ma demande sera plus claire . pour toutes infos complèmentaire j'ai placé dans mon message prècèdent les classeur conserné que vous pouver consulter.

Vous remerciant par avance du coup de main je vous dis à plus sur se fil . Amicalement BR44.
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Bonjour br44

regarde le code ci-dessous si cela peut t'aider :

Code:
Option Explicit
Sub test()
Dim Mavariable As String, Wb1 As Workbook, Chemin As String, i As Integer
Dim x As Range
Mavariable = InputBox("Tapez la refClient:")
If Mavariable = "" Then Exit Sub
Chemin = "C:\Documents and Settings\Rimmele\Bureau\essaisFichier\tournees.xls "
Set Wb1 = Workbooks.Open(Chemin)
For i = 1 To Wb1.Sheets.Count
    Set x = Wb1.Sheets(i).Cells.Find(Mavariable, , xlValues, xlWhole, , , False)
    If Not x Is Nothing Then MsgBox "trouvé sur feuille " & Sheets(i).Name _
        & " en cellule :" & x.Address
Next i
End Sub

bonne journée
@+
 

skoobi

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Bonjour br44,

voici le code complété:

Code:
[B][COLOR=blue]Dim RefClient As Range[/COLOR][/B]
.....
............
'Définit la variable MaVariable
MaVariable = InputBox("Tapez Une Rèfèrence Client:")
If MaVariable = "" Then Exit Sub
Chemin = "C:\Documents and Settings\Rimmele\Bureau\essaisFichier\tournees.xls "
Set Wb1 = Workbooks.Open(Chemin)
For i = 1 To 3
[COLOR=blue][B]Set RefClient = Wb1.Sheets(i).Cells.Find(MaVariable, LookIn:=xlValues, lookat:=xlWhole)[/B][/COLOR]
[B][COLOR=blue]If Not RefClient Is Nothing Then[/COLOR][/B]
[B][COLOR=blue]'ici ce que tu veux faire[/COLOR][/B]
[B][COLOR=blue]'..............[/COLOR][/B]
[B][COLOR=blue]'...........[/COLOR][/B]
[B][COLOR=blue]End If[/COLOR][/B]
[B][COLOR=blue]Next[/COLOR][/B]

Edit: arrfff, suis à la bourre moi!, salut Pierrot, toujours un plaisir de te croiser :)
 
Dernière édition:

br44

XLDnaute Impliqué
Re : Rechercher à partir d' un Inputbox

Re: Rebonjour à tous ,

Bon je viens de tester vos propositions est c'est super elle fonctionne toutes les deux .

Si vous pouviez m'aider pour la suite se serais gèniale ?

Voilà je voudrais copier une une feuille situèe dans le classeur nomè "model.xls" et l'inserer à la fin de la fiche dont le Refclient à ètè rechercher soit 27 lignes plus bas ?

Ceux qui me donnerais à titre d'exemple (pas sur du tout)
Dim Wb3 as Workbook
chemin1 As String

Set Wb3 =WorkBooks.open(Chemin1)
Chemin1= "C:\Documents and Settings\Rimmele\Bureau\essaisFichier\model.xls"

With Wb3.Sheets("Feuil1").range("A1:F29").copy
End With
With Wb1 .Sheets(i) .........
'trouve la ligne à selectionner." partie à completer svp ".
Ligne select = Selection.Insert Shift:=xlDown
End With

En espèrant être claire dans ma demande et vous remerciant de votre aide je vous dis à bientôt sur se fil .Amicalement Br44
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Re, bonsoir Skoobi

pas sur d'avoir tout compris, mais si comme je le suppose.... les 2 procédures sont liées, tu peux essayer ceci :

Code:
Option Explicit
Sub test()
Dim Mavariable As String, Wb1 As Workbook, Chemin As String, i As Integer
Dim x As Range, Wb3 As Workbook, Chemin1 As String
Mavariable = InputBox("Tapez la refClient:")
If Mavariable = "" Then Exit Sub
Chemin = "C:\Documents and Settings\Rimmele\Bureau\essaisFichier\tournees.xls "
Set Wb1 = Workbooks.Open(Chemin)
Chemin1 = "C:\Documents and Settings\Rimmele\Bureau\essaisFichier\model.xls"
Set Wb3 = Workbooks.Open(Chemin1)
For i = 1 To Wb1.Sheets.Count
    Set x = Wb1.Sheets(i).Cells.Find(Mavariable, , xlValues, xlWhole, , , False)
    If Not x Is Nothing Then x.Insert xlShiftDown, Wb3.Sheets("Feuil1").Range("A1:F29").Copy
Next i

@+
 

br44

XLDnaute Impliqué
Re : Rechercher à partir d' un Inputbox

Re: Rebonsoir ,pierrot93,le forum

Je viende tester ta macro dont le pricipe fonctionne .

J'ai juste un petit soussi à l'affichage du rèsultat ,Oui se dernier se copie dans la cellule rechercher au lieu de se dècalè en fin de feuille et en colonne A

est-il possible de rectifier se petit soussi ?

Voilà ce qu'affiche ta macro :

RefClient Rechercher =C055 (pour l'exemple)
Résultat afficher =F32:K60
Donc resultat dècaler vers le haut à droite

Se que je voudrais si c'est possible :

RefClient rechercher =C055 située en F61
Résultat à afficher en A88
C'est_à dire : 27 lignes en dessous de la ref trouver est dècaler à gauche.?


En m'excusant pour le dètail et te remerciant d'avance je te dis à bientôt sur se fil .Amicalement BR44
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Re

essaye en utilisant la propriété offset de la cellule trouvée :

Code:
If Not x Is Nothing Then [B][COLOR="Red"]x.Offset(nblignes,nbcolonnes).Insert [/COLOR][/B]xlShiftDown, Wb3.Sheets("Feuil1").Range("A1:F29").Copy
Next i

bonne soirée
@+
 

br44

XLDnaute Impliqué
Re : Rechercher à partir d' un Inputbox

Re:Bonjour Pierrot93 ,le forum

Tout d'abord un très grand Merçi :p:p:p à toi pour ta rèponse.:):););)

Je vient d'adapter et de tester ta solution est ça marche !!!.

Si tu as un peu de temps pourrais tu me mettre les modifs à apporter sur ta macro pour l'adapter pour une supression de fiche mais du coup a faire dans le même classeur .

Pour la modif à partir de :

If Not x nothing then

x.offset(-2,-5) pour revenir au niveau du dèbut de la fiche rechercher

pour la suite :

Selectione la plage correspondant à une fiche entière soit :

Si la RefClient recherche est C055 Qui se trouve en "F32"
Revenir en "A30" puis selectioner la plage "A30:F58" et l'effacer .


Je te remercie par avance et te dis à bientôt sur se fil . Amicalement Br44
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Bonsoir br44

peut être en dire un peu plus, quels sont les critères permettant d'identifier la plage à effacer par rapport à la cellule trouvée, sinon tu peux peut être t'inspirer de ceci :

Code:
If Not x Is Nothing Then Range(x.Offset(-10, -1), x.Offset(4, 5)).ClearContents

bonne soirée
@+
 

br44

XLDnaute Impliqué
Re : Rechercher à partir d' un Inputbox

Re: bonsoire Pierrot 93,le forum ,


Merçi pour la rapiditée de ta rèponse . Pour rèpondre à ta question ,il n'y a pas de critère vraiment dèfinit .Il sagit plustôt d'une option logique de ma dèmarche .

Oui si je j'enregistre un nouveau client il a une nouvelle fiche associée ,mais à l'inverse si je dois suprimer un client il est logique que je puisse effacer sa fiche ègalement .

Le but ètant d'èviter au utilisateur d'avoire à faire des manipes inutile quand ton peut les automatisées .

En se qui conserne ta dernière prosition le temps que j'adapte mon program pour tester et je te tient au courant .


Je te dis à plus pour le rèsultat du teste et te remercie de nouveau pour tout . Bonne soirèe à toi amicelement Br44
 

br44

XLDnaute Impliqué
Re : Rechercher à partir d' un Inputbox

re:Bonjour Pierrot93,le forum ,


Comme prèvu dans mon message prècèdent je viens te tenir au courant . Hèlas ta proposition ne fonctionne pas ,J'ai l'erreure "1004" suivante:

"La methode Range de l'objet WorkSheet à echoué " cette erreure se situe au niveau :

Range(x.Offset(-2,-5),x.Offset(29,5)).Clearcontents

J'ai essayé plusieures solutions (Avec et sans (),avec où sans Range ,ect...) mais rien .

Je suis dèsoler mais je ne voies pas où cela peut beuger ,si tu as une solution je suis preneur .


En te remerçiant par avance je te dis à plus sur se fil .Amicalement Br44
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Bonsoir br44

As tu mis le code dans un module standard ou dans le module d'une feuille ?Chez moi cette synthaxe fonctionnait, pourrais tu joindre un petit fichier avec le code reproduisant l'erreur, plus facile pour voir d'où cela provient.

bonne soirée
@+
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Programme VBA
Réponses
3
Affichages
441

Statistiques des forums

Discussions
312 672
Messages
2 090 773
Membres
104 662
dernier inscrit
Hurve