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

Bonjour br44

bien vu br44, tu fermes le classeur mais tu y fais ensuite référence, supprimes les 2 lignes en rouge et gras, à noter que ce même classeur est ensuite à nouveau sauvegardé et fermé :

Code:
 'Envoie les informations vers la nouvelle feuille de ramassage
 Wb5.Sheets("F.R.M").Range("F3").Value = RefClient.Value
 Wb5.Sheets("F.R.M").Range("A4").Value = NomClient.Value
'Sauvegarde et ferme le classeur "Model"
 [B][COLOR="Red"]Wb5.Save
 Wb5.Close[/COLOR][/B]
 
'Dèfinit et affiche le message
MaVariable = InputBox("Tapez la refClient:")
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 x.Offset(27, -5).Insert xlShiftDown, [B]Wb5.Sheets("F.R.M").Range("1:29").Copy[/B]  MsgBox "La nouvelle feuille client est enregistrée"
Next z 'Sort de la boucle

bonne journée
@+
 

br44

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

Re:rebonjour à tous ,

Bonne nouvelle ça marche youpi!!!!!! :p:p:p:p:):):):)

Bon il ne mreste plus qu'a faire la même chose avec le bouton "suprimer" .

A se sujet juste une petite question en passant venant de mes observations pendant mes testes .

Pour suprimer le contenue d'une lignes dois-je employer le mot "Clear" où le mot "Delet" ,qui pour ma part semble supprimer une ligne ?

Oui je m'explique : quand j'ai regarder mes classeurs apprait plusieur essais je me suis aperçu que les nouvelles entrèe se faisait aprés la fin des tableaux qui ont un calcul (valables pour les classeur "S.xls" et "CA.XLS" ).

j'ai donc agrandi les feuilles pour pouvoire tenir compte des nouvelles entrées , et je viens de regarder de nouveaux après les avoir suprimer et la toutes lignes rajoutées avais disparues (au coin de ma rue :p:p:p) .

D'où la question que je me pose , si tu pouvais me confirmé mon doute se serais bien .

En espèrant ne pas trop abuser de ton temps et te remerciant par avance je te dis à bientôt sur se fil .Amicalement BR44
 

skoobi

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Bonsoir br44 :),
Pierrot:),

Je laisse un peu souffler Pierrot :D et veut bien te répondre.
"Clear" vide toute la cellule, c'est-à-dire le contenu ainsi que le format.
"Delete", tu l'as deviné, supprime la ligne (ou cellule), comme le "supprimer" d'excel.
Un autre que tu n'a pas cité, "ClearContents", vide le contenu de la cellule tout en gardant le format de cette dernière.
Voili voulou.
Bonne soirée,
Amitiés XLDiennes :)
 
Dernière édition:

br44

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

Re:Bonsoir,Skoobi,Pierrot93,le forum

Un Grand merçi à toi skoobi pour cette rèponse je vais donc eesaye d'adpter ma macro au quelle tu gènèreusement contribuée.

En espèrant que cela ne te vexe pas . :p:p:p;)

Bon je vais tester ma solution avec Clearcontent et si j'ai blème je revindrais vous voir.

Amicelement BR44
 

br44

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

Re:bonsoir le forum ,Skoobi,Pierrot93,

Après avoire essayer la methode Clearcontent,je me suis aperçu que c'ètait bien cela qui me faudrais .

Je peut l'adapter pour sur macro classique du style :

Effacer la plage allant de la colonne "A" la colonne "J" se qui serait ègal en vba à :

Range("A:F").Clearcontent .

Mais Comment puis -je l'adapter à une macro de se style :

Private Sub MjFichier(TypeFic As Byte) ' Mises à jours des nouvelles données dans le fichier
'*****************************Pour la partie Suppression *******************************************
'Recherche sur le classeur Client

With Wb2.Sheets("Feuil1")
' Dernière ligne en colonne A
Derlig = .Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
If Derlig < 2 Then Derlig = 2

' Définit la plage des références client en colonne A
Set Plage = .Range("A2:A" & Derlig)

' Rechercher la référence client
Set Cell = Plage.Find(RefClient.Value, , LookIn:=xlValues, lookat:=xlWhole)

' La référence client est trouvée
If Not Cell Is Nothing Then
WsFic.Rows(Cell.Row & ":" & Cell.Row).EntireRow.ClearContents
End If
End If
End With
End Sub


'La partie à èffacer ètant la plage "A:K" de la ligne trouvé?

Espèrant avoir ètè claire dans ma demande et vous remerciant par avances je vous dis à bientôt sur se fil .amicalement Br44
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Bonsoir br, Skoobi

essaye peut être comme ceci, mais de toute évidence 1 seule ligne sera concernée car "cell.row" sera le numéro de la ligne de la cellule recherchée, enfin si j'ai bien compris...

Code:
WsFic.Range("A" & cell.Row & ":K" & cell.Row).ClearContents

bonne soirée
@+
 

br44

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

Re:Re bonsoire,Pierrot93,skoobi,le forum

Je vois que tu es toujour prêt et aussi rapide pour rèpondre ,je te remerçie donc.

Oui tu as bien compris il s'agit bien des cellules recherchées au moment de la suppresion . Je teste ta solution et vous tiens au courant. Bonne soirèe à tous ,amicalement BR44
 

br44

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

Re:Bonjour Pierrot93;Skoobi,le forum

bon j'ai essayeé ta proposition ,ça l'aire de marché mais il faut aussi que je modifie la macro du bouton 'Suprimer pour être sur du rèsultat et là je bloc

J'ai essayé plusieur possibilitées mais je n'arrive pas à obtenir se que je veux

Voici la macro consernée

Private Sub CommandButton3()_Click
'Bouton "SUPPRIMER"
'Dèclare la variable RetMsg
Dim RetMsg As Integer
'Dèclare la variable Trouve
Dim Trouve As Range

'Envoie le données vers le classeur"Chiffre d'Affaire .Xls"
'Déclare le Chemin3 vers "CA.xls"

Dim Chemin4 As String'Dèclare la variable Wb1
Dim Wb4 As Workbook'Dèclare la variables ii
Dim ii As Integer

'Dèfinit la varible Chemin3
Chemin4 = "C:\Sauvegarde Rapid\RAPID\GESTION\CA.XLS"
'Dèfinit la varaible Wb4
Set Wb4 = Workbooks.Open(Chemin4)

'Boucle sur les 12 premières feuilles du classeur "CA.xlsFor ii = 1 To 12
With Wb4.Sheets(ii)
Set Trouve = .Range(.[A3], .[A3].End(xlDown)).Find(NomClient.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not Trouve Is Nothing Then
Trouve.EntireRow.ClearContents
End If
End With
Next

'Enregistre les données du classeur "CA.XLS"
Wb4.Save
'Ferme le Classeur "CA.XLS"
Wb4.Close
End Sub

à Remplacer: par effacer les colonnes allant de "A:K" de la ligne trouvée

Si l'un de vous deux à ne idée je suis prenneur de mon coté j'ai essayée les formules suivantes :

Trouve .range("A:K").ClearContents



Trouve.Rows("A:K").ClearContents

me donne des une erreur 1004

Voilà où j'en suis .Vous remerçiant par avance du coup de mains je vous dis à bientôt sur se fil .Amicalement Br44
 

br44

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

Re: Bonsoire Pierrot93,le forum

Merçi pour cette rèponse rapide .

Le code que tu fourni hier ètaits pour la mise à jour du fichier et la cet pour la commande du bouton supprimer . je teste et te tiens au courant .Amicalement BR44
 

br44

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

Re:Bonjour à tous ,

je viens vers vous pour une petite question . j'ai adapter ma macro à mon bouton "modifier" afin que je puisse dèplacée une feuille en cas de changement d'adresse .

Ma macro fonctionne il ne me manque plus que la suppression des lignes vides aprés la fonction coupée.

Je mets ci-dessous la macro consernée . Espèrant avoire ètè claire dans ma demande je vous dis à plus .Amicalement Br44

'Déplacement des feuilles Clients suite à Modification
'Déclare la variable RetMsg

Dim RetMsg As Integer'Déclare la variable Wb6
Dim Wb6 As Workbook'Déclare la variable Chemin6
Dim Chemin6 As String'Déclare la variable Ma Variable
Dim MaVariable As String
'Déclare la variable Message
Dim Message As String'Déclare la variable z
Dim z As Integer
'Déclare les variables x
Dim x As Range


'Dèfinit les variables Chemin6
Chemin6 = "C:\Sauvegarde Rapid\RAPID\TOURNEES\RAMASSAGES\TOURNÉES DE RAMASSAGE NANTES.xls"
'Définit les variables Wb6
Set Wb6 = Workbooks.Open(Chemin6)

'Dèsactive le message d'alerte d'Excel Application.DisplayAlerts = False

'Message de confirmation de dèplacement de Client
RetMsg = MsgBox("Voulez-vous Dèplacer ce client ?", vbInformation + vbYesNo, "Demande de Dèplacement...")

'Si le dèplacement est confirmé
If RetMsg = vbYes Then
'Lancer la recherche de feuille client
MaVariable = InputBox("Tapez la RefClient que vous voulez dèplacer:")
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
With Wb6.Sheets(z).Range(x.Offset(-2, -5), x.Offset(26, 5)).Cut

Partie à compléter pour supprimer les lignes laissées vides par le dèpalcement de la feuille sélectionées .cette partie est de 29 lignes .
End With
End If
Next z
'Sort de la boucle
'Recherche le nouvel emplacement de la feuille Client
'Lance la nouelle recherche

Message = InputBox("Tapez la RefClient que vous recherchez:")
If Message = "" 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(Message, , 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 x.Offset(27, -5).Insert xlShiftDown
Next z 'Sort de la boucle
MsgBox "La feuille clients à bien été dèplacée"
End If

'Sauvegarde et ferme le classeur "Tournées"

Wb6.Save
Wb6.Close
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher à partir d' un Inputbox

Bonsoir br

pas testé, mais essaies peut être comme ceci :

Code:
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))
        .Delete
    End With
End If
Next z

bonne soirée
@+
 

br44

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

Re:Bonjour Pierrot93,le forum ,

Je viens de lire ton message dont je te remercie ,j'ai tester mais je crois qu'il me faudrais une petite explication si cela est possible .

j'ai rajouter la ligne suivante à la suite de ma macro à l'endroit prèvu (en rose sur mon message précédent) :

With Wb6.Sheets(z).Range(x.Offset(-2, -5), x.Offset(26, 5))
.Delete
End With

Dans cette configuration l'insertion de la copie où lors de la crèaion d'une nouvelle feuille ne se fait pas ,mais il n'y a aucun beug de signaler ?

Je me posais la question de savoire si c'étais toute la macro qu'il falais que place où simplement la ligne ?

Si tu as une expliction à ce petit soussi je suis preneur ,si tu as un peut de temps à me consacrè. Te remeciant par avance pour tout je te dis à bientôt sur se fil . Amicalement BR44
 

Discussions similaires

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

Statistiques des forums

Discussions
312 864
Messages
2 093 013
Membres
105 603
dernier inscrit
Tipou