FOnction de recherche dans une colonne avec copie
ptitdal
-
ptitdal -
ptitdal -
Bonjour,
Je suis face à un nouveau problème sur VBA, après pas mal de recherche j'ai décidé de créer cette discussion.
Je souhaiterais faire une recherche via un userform, l'idée est qu'une combobox me donne la feuille où chercher, la textbox me donne la valeur que je veux chercher et le reste c'est du code pour trouver les ligne correspondante à ma valeur. Pour se faire j'ai utilisé la fonction .find (xlpart) pour trouver toutes les lignes qui correspondraient à ce que j'écrit en partie. (j'espère que c'est clair :) )
Mon problème est que quand j'ai un équipement qui porte uniquement 2 lettres, la copie ne se fait pas dans le tableau sur la feuille recherche, pour que ca fonctionne je dois activer le Matchcase, mais je ne veux pas le faire sinon la recherche deviendra trop compliqué (entre autre, certains équipement sont rentrés en acronyme et d'autre en toutes lettres)
Je dois donc pouvoir rechercher n'importe quoi dans ma feuille active, dans la colonne A, et renvoyer une erreur quand aucune occurrence n'est trouvée.
Ma recherche ne fonctionne pas quand il y a moins de 3 lettres et l'erreur m'est renvoyée systématiquement même si je trouve une occurrence.
Merci d'avance pour votre aide.
Voici mon code :
Je suis face à un nouveau problème sur VBA, après pas mal de recherche j'ai décidé de créer cette discussion.
Je souhaiterais faire une recherche via un userform, l'idée est qu'une combobox me donne la feuille où chercher, la textbox me donne la valeur que je veux chercher et le reste c'est du code pour trouver les ligne correspondante à ma valeur. Pour se faire j'ai utilisé la fonction .find (xlpart) pour trouver toutes les lignes qui correspondraient à ce que j'écrit en partie. (j'espère que c'est clair :) )
Mon problème est que quand j'ai un équipement qui porte uniquement 2 lettres, la copie ne se fait pas dans le tableau sur la feuille recherche, pour que ca fonctionne je dois activer le Matchcase, mais je ne veux pas le faire sinon la recherche deviendra trop compliqué (entre autre, certains équipement sont rentrés en acronyme et d'autre en toutes lettres)
Je dois donc pouvoir rechercher n'importe quoi dans ma feuille active, dans la colonne A, et renvoyer une erreur quand aucune occurrence n'est trouvée.
Ma recherche ne fonctionne pas quand il y a moins de 3 lettres et l'erreur m'est renvoyée systématiquement même si je trouve une occurrence.
Merci d'avance pour votre aide.
Voici mon code :
Private Sub CommandButton2_Click()
Sheets("Recherche").Cells.Clear 'supression de ce qui se trouve sur la feuille recherche
If ComboBox1.Value = "" Then MsgBox "Veuillez indiquer le domaine d'application de votre recherche.", 64, "Erreur"
If TextBox1.Value = "" Then MsgBox "Veuillez indiquer un nom d'équipement pour effectuer une recherche.", 64, "Erreur"
Dim valcherche As String
Dim i As Long
Dim domaine As String
Dim trouve As Variant
Dim adressetrouvee As String
Dim plage As String
domaine = ComboBox1.Value
valcherche = TextBox1.Value
trouve = Sheets(domaine).Cells.Find(what:=valcherche, SearchOrder:=xlByRows, MatchCase:=False, LookAt:=xlPart)
For i = 1 To Sheets(domaine).Range("A65536").End(xlUp).Row
If Sheets(domaine).Cells(i, 1) = trouve Then
Sheets(domaine).Rows(i).Copy Worksheets("Recherche").Rows(Worksheets("Recherche").Range("A65536").End(xlUp).Row + 1)
With Selection ' mise en page de la copie
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
If trouve = "" Then
MsgBox "Aucune occurance trouvée ! Essayez de changer le nom de l'équipement ou le domaine d'application.", 64, "Erreur"
End If
End If
Next i
Sheets("recherche").Activate 'pour visualiser notre recherche dans la feuille en question
End Sub
A voir également:
- FOnction de recherche dans une colonne avec copie
- Déplacer une colonne excel - Guide
- Fonction si et - Guide
- Trier une colonne excel - Guide
- Copie cachée - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
1 réponse
Bonjour,
Je dois donc pouvoir rechercher n'importe quoi
Donc vous voulez trouver toutes cellules qui contiennent au moins ce que vous avez choisi !
une facon de faire
Je dois donc pouvoir rechercher n'importe quoi
Donc vous voulez trouver toutes cellules qui contiennent au moins ce que vous avez choisi !
une facon de faire
Private Sub CommandButton2_Click() Dim valcherche As String Dim domaine As String Dim Nb As Long domaine = ComboBox1.Value valcherche = Textbox1.Value Worksheets("Recherche").Cells.Clear 'supression de ce qui se trouve sur la feuille recherche With Worksheets(domaine) valcherche = "*" & valcherche & "*" 'equivalent Like Nb = Application.CountIf(.Columns(1), valcherche) 'nombre de fois la valeur cherchee If Nb > 0 Then 'Ok au moins 1 .Rows(i).Copy Worksheets("Recherche").Rows(Worksheets("Recherche").Range("A65536").End(xlUp).Row + 1) Else MsgBox "Aucune occurance trouvée ! Essayez de changer le nom de l'équipement ou le domaine d'application.", 64, "Erreur" End If '????????????????????????????????? 'With Selection ' mise en page de la copie ' .HorizontalAlignment = xlCenter ' .VerticalAlignment = xlCenter ' .WrapText = True ' .Orientation = 0 ' .AddIndent = False ' .IndentLevel = 0 ' .ShrinkToFit = False ' .ReadingOrder = xlContext ' .MergeCells = False 'End With End With Worksheets("Recherche").Activate 'pour visualiser notre recherche dans la feuille en question End Sub
Merci pour votre réponse.
Oui je veux faire une recherche dans la colonne A de tout ce que je rentre dans un textbox. il faut que la recherche soit aussi efficace avec ou sans majuscules et avec une partie du mot ou de ce qui se trouve dans la cellule.
Le code que vous m'avez fait me ressort une erreur définie par l'objet sur la ligne
j'ai remplacé par ceci pour remettre la variable Nb
Mais quand j'exécute la recherche je me retrouve uniquement avec la première ligne de mon tableau qui est copié(c'est le titre de chaque colonne, donc inutile), et en plus cela ne correspond pas à ma recherche Lol
Regardez le post 1, j'y ai mis un code
Normal, j'ai oublie de mettre le code de recherche
Je rectifie
Merci !