Recherchev en vba entre 2 feuilles avec boucle EXCEL
Résolu
PYGOS69
Messages postés
452
Date d'inscription
Statut
Membre
Dernière intervention
-
PYGOS69 Messages postés 452 Date d'inscription Statut Membre Dernière intervention -
PYGOS69 Messages postés 452 Date d'inscription Statut Membre Dernière intervention -
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,
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
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
Bonjour,
Essaie ce code corrigé (à partir de ton code initial) pour ton sixième calcul
Cordialement
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
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...
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 !