Recherchev en vba entre 2 feuilles avec boucle EXCEL [Résolu]

Messages postés
142
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
6 novembre 2019
- - Dernière réponse : PYGOS69
Messages postés
142
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
6 novembre 2019
- 6 nov. 2019 à 18:24
Bonjour,

Je recherche la traduction de recherchev en vba excel, dans un cas précis avec une boucle.

J'ai 6 calculs pour éviter les formules, mais le code (6èmè calcul) me renvoit #N/A dans la colonne P de la feuille TAO2019.

Les autres fonctionnent....voir fichier joint ci dessous

https://www.cjoint.com/c/IKgjnDitgXC

Cordialement,

Configuration: Windows / Internet Explorer 11.0
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
8901
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2019
449
1
Merci
bonjour, suggestion:
Dim FeuilleData As Worksheet, FeuilleRésultat As Worksheet, FeuilleDATES As Worksheet 'Déclaration et affectation des variables de travail
Dim IndiceFinData As Long, IndiceFinRésultat As Long 'Déclaration et affectation des variables de la boucle - Calcul dernière ligne
Dim PlageValeurJOUV As Variant 'Déclaration et affectation de la variable > plage ou appliquer le résultat du calcul en nbre de jours ouvrés
Dim CalcDatesJOUV As Range
Dim N As Long, cl As Range, dt As Date

Set FeuilleRésultat = Sheets("TAO2019")
IndiceFinRésultat = FeuilleRésultat.Range("A1").End(xlDown).Row
Set FeuilleDATES = Sheets("CalcDates")
Set CalcDatesJOUV = FeuilleDATES.Range("m19:m30")
For N = 2 To IndiceFinRésultat
    dt = DateSerial(FeuilleRésultat.Cells(N, "M"), FeuilleRésultat.Cells(N, "N"), 1)
    For Each cl In CalcDatesJOUV
        If cl = dt Then
            FeuilleRésultat.Cells(N, "P") = cl.Offset(0, 1)
            Exit For
        End If
    Next cl
Next N

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 71098 internautes nous ont dit merci ce mois-ci

PYGOS69
Messages postés
142
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
6 novembre 2019
2 -
Bonjour yg_be,
Merci pour cette suggestion !
Le fichier plante pendant l'exécution de la macro....
J'ai séparé les 5 premiers calculs du 6ème et à l'enchaînement du 6ème , ça mouline et puis plantage...
PYGOS69
Messages postés
142
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
6 novembre 2019
2 -
Quand j'ouvre de nouveau le fichier récupéré, après redémarrage du programme Excel, le résultat est bon.

J'ai essayé avec 25 lignes, cela fonctionne, mais 80000 lignes c'est long et plantage...

Les 5 premiers calculs prennent quelques secondes. C'est à la 6ème qu'excel rame.

Encore Merci pour ton aide !
Commenter la réponse de yg_be
Messages postés
246
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
11 novembre 2019
9
1
Merci
Bonjour,

Essaie ce code corrigé (à partir de ton code initial) pour ton sixième calcul

' 6ème calcul Nombre de jours ouvrés

Dim PlageValeurJOUV As Variant 'Déclaration et affectation de la variable > plage ou appliquer le résultat du calcul en nbre de jours ouvrés
PlageValeurJOUV = FeuilleRésultat.Range("P1:P" & IndiceFinRésultat).Value 'Boucle sur la colonne pour définir la dernière ligne et saisie résultat en colonne P

Dim PlageMois As Variant
PlageMois = FeuilleRésultat.Range("N1:N" & IndiceFinRésultat).Value

Dim CalcDatesJOUV As Variant
CalcDatesJOUV = FeuilleDATES.Range("L19:N30").Value '

Dim N As Long
'Calculs
For N = 2 To IndiceFinRésultat 'Boucle sur les lignes feuille Résultat
    PlageValeurJOUV(N, 1) = Application.VLookup(PlageMois(N, 1), CalcDatesJOUV, 3, False) 'Boucle sur les lignes feuille Data
Next N ' boucle
FeuilleRésultat.Range("P1:P" & IndiceFinRésultat).Value = PlageValeurJOUV 'Ecriture résultat


Cordialement

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 71098 internautes nous ont dit merci ce mois-ci

PYGOS69
Messages postés
142
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
6 novembre 2019
2 -
Un grand Merci pour ta disponibilité ! Cela fonctionne !
Bonne fin de journée !
Commenter la réponse de ALS35