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

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Bonsoir br44

oui, c'est aussi à cet endroit qu'il fallait la mettre, ce code doit supprimer les lignes en question... j'ai cru comprendre que c'était ce que tu voulais.

Chez moi ce code a fonctionner, mais bien sur sur un fichier test sans trop de données... Mais bon, à priori la synthaxe est là...

Essaye peut être de reproduire le cas sur un tout petit fichier, plus facile à voir...

bonne soirée
@+
 

br44

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

Re: Bonsoire Pierrot93,le forum


J'accuse rèception de ton message , j'ai essayer la ligne et la macro complete . est le rèsutat est le même .

je crois qu'il faut que je passe par le presse-papier ,que j'efface les lignes et enfin que je colle à partir du presse-papier mais là je connais pas la procèdure .

Je crois qu'il sagit de remplacer le"Cut" par "CutCopieMode" mais je n'en suis pas du tout.

Où une recherche d'une plage de 29 lignes vides à partir des dernière lignes occupées de chaqu'une des feuilles du classeur .

Si tu peut m'expliquer cette procèdure si ellle est adaptée bien sur , j'esserais de l'adapter de mon côtè .

En se qui conserne le fichier je vais essayer mais cela n'est pas èvident compte tenu du nombre de liaisons .


Pour t'expliquer se qui se passe ,j'ai un dèclage de la première colone vers le bas et le defusionnage des cellules de l'entête de toutes les feuilles clients et ceci dans la feuille du classeur selectionée .

Je te remercie pour le coup de main et te dis à plus .Amicalement Br44
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Re

regarde le code ci dessous, utilises une copy de la plage vers un autre classeur (wb7) et ensuite supprime les lignes :

Code:
Sub test()
For z = 1 To 3
Set x = Wb6.Sheets(z).Cells.Find(MaVariable, , xlValues, xlWhole, , , False)
If Not x Is Nothing Then
    With Wb6.Sheets(z).Range(x.Offset(-2, -5), x.Offset(26, 5))
        .Copy Wb7.Sheets("nomfeuille").Range("A1")
        .Delete
    End With
End If
Next z
End Sub

A voir si cela peut t'aider, mais sans un petit fichier, avec le code utilisé, difficile pour moi de t'aider. Sans compter que les cellules fusionnées peuveut poser problème...

bonne journée
@+
 

br44

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

Re: Bonsoir Pierrot93, le forum

Je viens de prendre connaissence de ton message je te prèpare un fichier avec le code complet du bouton et le rèsultat qu'il donne en espèrant que cela te sufise . A plus Br44
 

br44

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

Re: rebonsoir à tous,


Comme prévue je joint un petit fichier avec un exemple du résultat de la macro avant la modif de supression de ligne .

Tu as la procédure complète sans le changement des chemins de liaisons ,mais cela devrait t'aider j'èspère que tu verras ce que je veux obtenir .


Te remerciant par avance pour le coup de main je te dis à plus . Amicalement BR44
 

Pièces jointes

  • essaisFichier.zip
    48.6 KB · Affichages: 37
  • essaisFichier.zip
    48.6 KB · Affichages: 37
  • essaisFichier.zip
    48.6 KB · Affichages: 36

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Re

comprends pas trop, chez moi le code ci dessous fonctionne :

Code:
 Set Wb6 = Workbooks.Open(Chemin6)
 
 'Dèfinit et affiche le message
MaVariable = InputBox("Tapez la refClient que vous voulez supprimer:")
If MaVariable = "" Then Exit Sub
'Boucle sur tout le classeur "Tournées"
For z = 1 To 3
'Dèfinit la varible x
Set x = Wb6.Sheets(z).Cells.Find(MaVariable, , xlValues, xlWhole, , , False)
'Si la RefClient Affichée dans le message est trouvé ,Alors copie est insert à l'endroit dèfinit
If Not x Is Nothing Then
 Wb6.Sheets(z).Range(x.Offset(-2, -5), x.Offset(26, 5)).Delete
End If

@+
 

br44

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

Re: Bonsoire Pierrot93, le forum

J'ai bien reçu ton dernier message pour lequel je te remercie .

Je suis d'accord que cette macro fonctionne sur le bouton "Supprimer".

Je crois que j'ai mis un classeur inutil dans mon dernier fichier joint , je parle de la partie jaune situèe dans la 3 feuille du classeur program.xls .
La macro consernée est située pour le bouton"Modifier" .

Le problème est de savoir comment faire fonctionner la variable x du faite que je coupe la feuille, de ce faite il n'y à plus de "RefClient" afficher ,puisque se sont des lignes vides ?

Maintenant je peux me tromper dans ce cas la peut tu me dire où tu place ta macro dans ma procèdure et me donner une petite explication pour que je comprenne le fonctionement .

En te remerciant pour ta patience et m'excusant si je ne suis pas sufisament claire dans mes explications .Amicalement BR44
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Bonjour,

un petit exemple pour illustrer le copier / delete, exécutes le code pas à pas (utilisation touche de fonction F8), ensuite à adapter à ton projet après modification des noms des feuilles et des décalages (propriété offset).

bonne journée
@+
 

Pièces jointes

  • classeur1.zip
    7.4 KB · Affichages: 43
  • classeur1.zip
    7.4 KB · Affichages: 40
  • classeur1.zip
    7.4 KB · Affichages: 36

br44

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

Re: Bonsoir Pierrot 93, le forum

j'accuse recption de tes deux messages et de ton fichier pour le quel je te remercie .

Le temps pour moi d'adapter et de tester tout ça et je te tiens au courant . Amicalement Br44
 

br44

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

Re: Bonjour Pierrot93,le forum

Je addresse se message pour vous donner des nouvelles de la situation .

J'ai réussi à résoudre mon problemème :):):):p:p:p;););)

voici la solution que j'ai trouvée:

'Dèfinit et affiche le message
MaVariable = InputBox("Tapez la refClient que vous voulez supprimer:")
If MaVariable = "" Then Exit Sub'Boucle sur tout le classeur "Tournées"
For z = 1 To 3
'Dèfinit la varible x
Set x = Wb6.Sheets(z).Cells.Find(MaVariable, , xlValues, xlWhole, , , False)
'Si la RefClient Affichée dans le message est trouvé ,Alors supprime l'endroit dèfinit
If Not x Is Nothing Then
Wb6.Sheets(z).Range(x.Offset(27, -5), x.Offset(55, 5)).Delete
End If
Next z 'Sort de la boucle
MsgBox "La feuille client à ètè supprimer"
'Sauvegarde et ferme le classeur "Tournées"
Wb6.Save
Wb6.Close
End Sub

J'ai rajouter cette partie à la fin de ma macro . J'éspère que cela vous randras service .

Je remerçie Pierrot93 Et Skoobi de l'aide et aussi tous ceux sont veunu lire se poste . Si vous voulez des explications sur la macro je suis à vôtre disposition si je peux vous aider . Vous remerciant tous et toutes je mest fin à ce poste et vous dis à bientôt sur le forum . Amicalement Br44
 

Discussions similaires

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

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 951
dernier inscrit
Misterb