XL 2013 Recherche avec fenetre

Moreno076

XLDnaute Impliqué
Bonjour à tous.

Dans le fichier ci-joint, je souhaite que lorsqu'il s'ouvre il propose une fenetre de recherche demandant un code article et faire OK.
Si le code article se trouve dans la colonne A, alors il met "Fiche retirée en semaine "puis recopie la colonne I ce qui ferait Fiche retirée en S46 par exemple.
Si le code ne se trouve pas dans la colonne A alors "Fiche non présente".
Et si possible avoir la possibilité de fermer la boite de dialogue pour pouvoir rajouter des lignes dans le fichier.

Merci pour votre aide.
 

Pièces jointes

  • TEST.xlsx
    10 KB · Affichages: 21
Solution
Bonsoir Moreno076,

Pour faire cela il faut remplacer l'InputBox par un UserForm, voyez son code dans le fichier joint :
VB:
Dim c As Range 'mémorise la variable

Private Sub CommandButton1_Click()
Set c = [A:A].Find(TextBox1, IIf(c Is Nothing, [A1], c), xlValues, xlWhole)
If c Is Nothing Then
    [A1].Select
    MsgBox "Fiche produit '" & TextBox1 & "' non présente", vbCritical
Else
    c.EntireRow.Select 'sélectionne la ligne entière
End If
End Sub

Private Sub TextBox1_Change()
Set c = Nothing 'RAZ
End Sub
A+

job75

XLDnaute Barbatruc
Bonjour Moreno076, salut vgendron,

2 remarques :

- vous ne dites rien de la colonne H je vais donc l'ignorer

- il n'est pas très judicieux de mélanger suppression et ajout mais si vous y tenez exécutez ce code :
VB:
Sub Macro()
Dim x$, i As Variant
x = InputBox("Code article :")
If x = "" Then Exit Sub
i = Application.Match(x, [A:A], 0)
If IsNumeric(i) Then
    MsgBox "Fiche retirée de la semaine " & Cells(i, "I")
    Rows(i).Delete
Else
    If MsgBox("Fiche non présente, voulez-vous ajouter l'article ?", 4) = 7 Then Exit Sub
    With [A:A].Find("", , xlValues)
        .Value = x
        .Resize(, 9).Borders.Weight = xlThin 'bordures
    End With
End If
End Sub
A+
 

vgendron

XLDnaute Barbatruc
Cette nouvelle version te permet d'ajouter directement une nouvelle ligne...
quelques précisions quand meme
1) lorsque tu cliques sur le bouton lancer, un userform s'ouvre
2) le Combobox est automatiquement alimenté par la liste des items existants
3) si tu sélectionnes un de ces items, le bouton "Retirer" s'affiche
4) tu peux saisir directement dans le CB un nouveau numéro ==> quand tu valides, le bouton nouveau s'affiche et permet d'ajouter la nouvelle ref en bas du tableau, et le Combobox est mis à jour avec cette nouvelle référence.

Hello @job75 je n'avais jamais pensé à ta solution pour ajouter un element en bas de tableau..
je note pour une prochaine
 

Pièces jointes

  • TEST (1).xlsm
    22.8 KB · Affichages: 12

Moreno076

XLDnaute Impliqué
Bonjour Moreno076, salut vgendron,

2 remarques :

- vous ne dites rien de la colonne H je vais donc l'ignorer

- il n'est pas très judicieux de mélanger suppression et ajout mais si vous y tenez exécutez ce code :
VB:
Sub Macro()
Dim x$, i As Variant
x = InputBox("Code article :")
If x = "" Then Exit Sub
i = Application.Match(x, [A:A], 0)
If IsNumeric(i) Then
    MsgBox "Fiche retirée de la semaine " & Cells(i, "I")
    Rows(i).Delete
Else
    If MsgBox("Fiche non présente, voulez-vous ajouter l'article ?", 4) = 7 Then Exit Sub
    With [A:A].Find("", , xlValues)
        .Value = x
        .Resize(, 9).Borders.Weight = xlThin 'bordures
    End With
End If
End Sub
A+
Bonjour vgendron, bonjour job75

je me suis probablement mal exprimé.

En fait pour la boite de dialogue, après avoir rentré le code, j'ai simplement besoin d'avoir la réponse si le code est présent dans la liste :

Si oui ca m'indique la semaine où la fiche a été retirée
Si non fiche non présente.

Mais en aucun cas ajout ou suppression de lignes

Merci :)
 
Dernière édition:

job75

XLDnaute Barbatruc
Mais en aucun cas ajout ou suppression de lignes
Vous avez raison, alors c'est bien simple :
VB:
Sub Macro()
Dim x$, i As Variant
x = InputBox("Code article :")
If x = "" Then Exit Sub
i = Application.Match(x, [A:A], 0)
If IsNumeric(i) Then
    MsgBox "Fiche de la semaine " & Cells(i, "I") & " " & Cells(i, "H")
Else
    MsgBox "Fiche non présente..."
End If
End Sub
 

Moreno076

XLDnaute Impliqué
Merci Job75, j'ai réajusté comme suit :

Sub Macro()
Dim x$, i As Variant
x = InputBox("Code article :")
If x = "" Then Exit Sub
i = Application.Match(x, [A:A], 0)
If IsNumeric(i) Then
MsgBox "Fiche retirée en semaine " & Cells(i, "I")
Else
MsgBox "Fiche non présente"
End If
End Sub

J'aimerais si possible que lors de l'affiche du résultat ca rappelle le code article rentré plus tôt.

Fiche "code article" retirée....

Après cela je rajouterais cette macro au démarrage du fichier je ne sais plus comment on fait mais je vais chercher.

Merci
 

Moreno076

XLDnaute Impliqué
Merci bien. J'ai réussi pour le démarrage. Je voulais rajouter vbCritical lorsque le code n existe pas. Et puis pour les deux cas, je voudrais rajouter la possibilité de faire une nouvelle recherche. Il faudrait donc que dans la boite de dialogue de resultat j'ai un bouton "effectuer une nouvelle recherche" et un autre "fin de recherche" je ne sais pas si on peut personnaliser.

Voici la dernière version :

Private Sub Workbook_Open()
Dim x$, i As Variant
x = InputBox("Rentrer le code article :", "Recherche code article")
If x = "" Then Exit Sub
i = Application.Match(x, [A:A], 0)
If IsNumeric(i) Then
MsgBox "Fiche produit '" & x & "' retirée en semaine " & Cells(i, "I")
Else
MsgBox "Fiche produit '" & x & "' non présente "
End If
End Sub


Merci à tous.
 

job75

XLDnaute Barbatruc
VB:
Private Sub Workbook_Open()
Dim x$, i As Variant
x = InputBox("Rentrer le code article :", "Recherche code article")
If x = "" Then Exit Sub
i = Application.Match(x, [A:A], 0)
If IsNumeric(i) Then
    MsgBox "Fiche produit '" & x & "' retirée en semaine " & Cells(i, "I")
Else
    MsgBox "Fiche produit '" & x & "' non présente !", vbCritical
End If
If MsgBox("Nouvelle recherche ?", 4) = vbYes Then Workbook_Open
End Sub
 

Discussions similaires

Réponses
5
Affichages
281

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo