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
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 !