• Initiateur de la discussion Initiateur de la discussion mimic44
  • 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

mimic44

Guest
Bonjour, 🙂

je souhaite réaliser une recherche V dans un fichier Excel qui me permet de rechercher la date sur une feuille et de la rapatrier sur une autre par rapport à un numéro de local (tous les locaux n'ont pas de date).
Exemple dans le fichier joint: les dates de la feuil1 sont à remettre devant sur la feuil2 suivant le numéro de local correspondant.

j'ai bien essayé mais je me bloque à un numéro d'erreur '91'

surement aurez vous une solution beaucoup plus simple que la mienne.

Merci d'avance pour vos réponses.
 

Pièces jointes

Re : Recherche V en VBA

Bonjour

tu as testé ce type de code (fait par l'enregistreur de macro) :

Sub Macro1()
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Feuil1!R2C1:R31C2,2,FALSE)"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B18"), Type:=xlFillDefault
Range("B2:B18").Select
End Sub
 
Re : Recherche V en VBA

bonjour et merci de t'intéresser à mon problème.

non en fait voici mon vrai code
feuille "données" est ma feuille de destination et "feuil3" est ma feuille source


Sub Macro1()

Application.ScreenUpdating = False


Dim NoLocal, i, j As Integer
Dim dateVente As Date
Sheets("données").Select

For i = 2 To Range("A1").End(xlDown).Row

On Error GoTo Suite

Sheets("données").Select
NoLocal = Range("h" & i)

Sheets("Feuil3").Select

j = Cells.Find(What:=NoLocal, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Row

dateVente = Range("G" & j)
Sheets("données").Select

Range("A" & i) = dateVente


Suite:

Next


End Sub
 
Re : Recherche V en VBA

le problème est que vu le nombre de ligne que j'ai (environ 25000) si je tape la formule à chaque fois mon fichier risque de finir "obèse".
je cherche donc à allèger et facilité l'utilisation.

le problème dans ta solution est que cela me recopie la formule mais ne traite pas en automatique ma demande, ce que je cherche en fait. Mais peux être que je m'étais mal exprimé.
 
Dernière modification par un modérateur:
Re : Recherche V en VBA

Bon j'ai repris mon baton de pelerin, ma serpette et ma pelle à charbon et j'y suis retourné en essayant de repenser ma macro et voici ce que j'ai obtenu:

Sub Macro1()

Dim i As Integer
Dim j As Integer


For i = 1 To Sheets("données").Range("B65536").End(xlUp).Row
For j = 2 To Sheets("planning vente").Range("A65536").End(xlUp).Row


Nolocal = Sheets("données").Range("h" & i)
Nolocal2 = Sheets("planning vente").Range("a" & j)
datevente = Sheets("planning vente").Range("b" & j)

If Nolocal = Nolocal2 Then Sheets("données").Range("A" & i) = datevente

Next j

Next i

End Sub

Et ça fonctionne 😀 le soucis maintenant c'est que mon fichier fait 22500 lignes !🙁 donc environ 6 heures de traitement.

Quelqu'un aurait il une solution "allègée" ? 😕
 
Dernière modification par un modérateur:
Re : Recherche V en VBA

Merci Mutzik

ça fonctionne mais c'est encore un peu long (environ environ 3 heures)

Y'aurait il une fonction plus rapide ou une façon du type RechercheV en VBA par ligne pour avoir la même solution ?
 
Re : Recherche V en VBA

bonjour

essais comme ceci
limiter les déclarations de vars inutiles !
initialiser en dehors des boucles
pas de next i le next seul est plus rapide

Code:
Sub Macro1()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'
Dim I As Integer, J As Integer, I2 As Integer, J2 As Integer
Fdon$ = "données": Fpla$ = "planning vente"
'
I2 = Sheets(Fdon$).Range("B65536").End(xlUp).Row
J2 = Sheets(Fpla$).Range("A65536").End(xlUp).Row
For I = 1 To I2: For J = 2 To J2
 If Sheets(Fdon$).Cells(I, 8) = Sheets(Fpla$).Cells(J, 1) Then
    Sheets(Fdon$).Cells(I, 1) = Sheets(Fpla$).Cells(J, 2)
 End If
Next: Next
Application.Calculation = xlCalculationAutomatic
Calculate
Application.ScreenUpdating = True
End Sub
 
Dernière édition:
Re : Recherche V en VBA

Bonjour Roland_M,

c'est encore mieux (environ 12 minutes)

je crois que je n'aurai pas mieux maintenant vu le nombre de donnée de mon tableau.

Merci à tous pour votre coup de main cela va grandement faciliter mes affaires.

Bonne continuation et merci encore !!😉
 
- 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

  • Question Question
Microsoft 365 Recherche
Réponses
1
Affichages
743
  • Question Question
Microsoft 365 recherche v en vba
Réponses
1
Affichages
689
Retour