[VBA-E] recherche dans un tableau
Salut tout le monde, je suis nouveau sur ce forum,
j'essaie de réaliser une macro de recherche via une inputbox sous excell. Le programme que j'ai réalisé pour l'instant ne marche que sur un petit classeur; pour un classeur de plus de 1500 lignes (et une dixaine de colonnes), cela ne marche pas et celà affiche cette erreur : "La méthode 'Range' de l'objet _Global a échoué" . Voici le pgm :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| Dim xCellule As Range
Dim xSelection As String
Dim Message As String
'Crée une boîte de dialogue :
Message = InputBox(" Entrez la date : ", "Mon Programme", "01/mm/aaaa")
'Arrête procédure si utilisateur clique sur annuler
If Message = " " Then Exit Sub
'Place la valeur dans la cellule A1;
'Worksheets("feuil2").Range(" A1 ").Value = Message
'Sélectionner le tableau :
'sélectionner toutes les cellules du tableau :
Selection.Worksheet.UsedRange.Select
'activer la dernière cellule du tableau
Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count).Activate
'Recherche " Message " dans le tableau :
For Each xCellule In Selection
If xCellule.Value = Message Then
xSelection = xSelection & xCellule.Address & ","
End If
Next
If Len(xSelection) > 0 Then
Range(Left(xSelection, Len(xSelection) - 1)).Select
End If |
Quelqu'un saurait-il me dire comment résorber ce problème?
merci d'avance
macro excel-recherche+recopie
Salut tout le monde,
je suis novice en macro excel; et j’ai deux petits pbm à résoudre :
Je dois faire une recherche dans un tableau contenant un très grand nombre de lignes (1500).
J’avais un pgrm qui marchait très bien sur les petits tableaux, mais qui était limité de par la mémoire.
Ainsi, grâce à ‘Ouskel’n’or’, :D j’ai pu géré un pti pgrm qui fait une recherche via une inputbox.
Cela donne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Sub Macro1()
'
Dim Message As String
'Crée une boîte de dialogue :
Message = InputBox(" Entrez la date : ", "Mon Programme", "01/mm/aaaa")
'Arrête procédure si utilisateur clique sur annuler
If Message = "" Then Exit Sub
Set Plage = ActiveCell.CurrentRegion
With Plage
.Find(What:=Message, After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
End With
Set Plage = Nothing
'
End Sub |
Ce programme marche très bien pour la recherche de mots, mais cela bug pour la recherche de dates.
Dans mon tableau excel, les dates sont sous la forme : févr-2005 ou juin-2006. Quand on tape la date il faut écrire par ex : 01/02/2005, et excel converti automatiquement cette date en févr-2005. Ainsi, lorsqu’on fait une recherche, il faut rechercher 01/02/2005 et non pas févr-2005.
Le pbm c’est qu’il y a un bug lorsque je fait ce type de recherche avec ce pgm… et je en sais pas pkoi :(
Dc si kkn pouvait me dépanner :D ca seré sympa
Mon 2ème petit souci est le suivant :
Le but de ce pgm étant de recopier toutes les lignes correspondant à la date recherchée, sur une autre feuille excel.
J’ai fait une application qui permet la sélection de toute une ligne lorsque une cellule est sélectionnée, et un syst de recopie sur une autre feuille.
Cela donne :
Code:
1 2 3 4 5 6 7 8
| sélectionner les lignes à partir dune sélection
Selection.EntireRow.Select
permet de copier et coller une ligne sur une autre feuille
Selection.Copy
Sheets("Feuil2").Select
k = ActiveSheet.UsedRange.SpecialCells(xlLastCell).End(xlToLeft).Row + 1
Cells(k, 1).Select
ActiveSheet.Paste |
Le but étant de recopier toutes les lignes contenant la date recherchée sur une autre feuille,
J’avais pensé à une boucle qui dit kkchse comme : tant qu’il y a un élément dans une cellule qui correspond à l’élément recherché alors continuer la recherche, si il n’y a plus d’élement : arrêter.
Le pbm est que je n’arrive pas à le mettre en forme :(
Merci d'avance a ceux qui pourront me venir en aide :D