copie d'une recherche

  • Initiateur de la discussion Initiateur de la discussion MicGump
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

MicGump

Guest
Bonjour,

Dans mon fichier excel j'effectue une recherche dans une feuille nommée "Recherche" à l'aide d'une box.
Et je copie mon ou mes résultats dans une feuille "Résultat".
Le problème c'est lorsque j'ai plusieurs résultats il ne m'en copie qu'un.
Je pense que ma boucle ne fonctionne pas correctement et/ou que je ne définis pas les bonnes cellules pour la copie.

Merci de m'aider, car mes connaissances en VB sont très faibles.
 

Pièces jointes

Re : copie d'une recherche

Bonjour Mic,

la sélection end(xlup) ne marche pas dans ce cas, sauf pour la première fois car elle ne s'actualise pas à chaque tour de boucle. en fait, caque donnée et recopiée sur la même ligne.

J'ai corrigé :

Code:
 Private Sub CmdValider_Click()
Dim i As Integer, ii As Integer
    Dim Dest As Range       '<<<<<<<<<<<<<<
ReDim tb(UF1.LB2.ListCount) As Integer
For i = 0 To UF1.LB2.ListCount - 1
    tb(i) = Val(Left(UF1.LB2.List(i), InStr(1, UF1.LB2.List(i), " ")))
Next i
Sheets("resultat").Cells.ClearContents
    Set Dest = Worksheets("resultat").Cells(Sheets("resultat").Cells(65536, 10).End(xlUp).Row, 1)   '<<<<<<<<<<<<<<<

For i = 0 To UF1.LB2.ListCount - 1
    Sheets("recherche").Cells(tb(i), 1).EntireRow.Copy
    'Sheets("resultat").Paste Destination:=Worksheets("resultat").Cells(Sheets("resultat").Cells(65536, 10).End(xlUp).Row + 1, 1)
    Sheets("resultat").Paste Destination:=Dest.Offset(ii, 0) '<<<<<<<<<<<<
    ii = ii + 1 '<<<<<<<<<<<<<<<<<<<
Next i
    Application.CutCopyMode = False
    Sheets("recherche").Activate
    
  
End Sub
remplace ton code par celui-ci et dis moi.

Bonne journée
 
Re : copie d'une recherche

Bonjour le Forum, Luki, MicGump

Deux remarques :

1 - la ligne ReDim tb(UF1.LB2.ListCount) As Integer n'est pas fausse mais n'est pas bonne non plus. tu veux stocker le contenu de ta listbox soit deux. Sachant que tu redimes ton tableau à 2 (dans le cas de Jean) et qu'un tableau commence à 0 donc tu as 0,1,2 il aurait fallut faire : ReDim tb(UF1.LB2.ListCount-1) As Integer pour avoir 2 entrées 0 et 1.

2 - Ensuite je ne vois pas trop pour quoi passer par un tableau il y a moyen de faire beaucoup plus simple.

Code:
Private Sub CmdValider_Click()
Dim i As Integer
Sheets("resultat").Cells.ClearContents
For i = 0 To UF1.LB2.ListCount - 1
    Sheets("recherche").Rows(Val(Left(UF1.LB2.List(i), InStr(1, UF1.LB2.List(i), " "))) & ":" & Val(Left(UF1.LB2.List(i), InStr(1, UF1.LB2.List(i), " ")))).Copy Destination:=Worksheets("resultat").Cells(i + 1, 1)
Next i
End Sub

Voila @+

Creepy
 
Re : copie d'une recherche

Bonjour à tous,

Je rejoins l'avis de Creepy sur l'utilité du tableau dans ce cas.

Mais son code fonctionne, il y a seulement un 0 de trop dans cette ligne pour chercher la première ligne vide dans la feuille résultat :

Code:
Sheets("resultat").Paste Destination:=Worksheets("resultat").Cells(Sheets("resultat").Cells(65536, 1[B][COLOR=Red]0[/COLOR][/B]).End(xlUp).Row + 1, 1)

Je l'ai enlevé pour rechercher sur la colonne A et ça fonctionne.

Bonne journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
166
  • Question Question
Microsoft 365 problème d'index
Réponses
19
Affichages
498
Réponses
3
Affichages
326
Retour