Récupérer valeurs en fonction de date

Tu as écrit "j'ai bien remis Dim extWs5 As Worksheet et Dim extWb5 As Worksheet" si c'est bien l'exact reflet de ton code corriges "Dim extWb5 As WorkBook".

J'ai bien mis ca pardon, erreur de copier coller

pour etre exact voici le code que j'ai fais, en modifiant le tiens :

'Ouvre le classeur "TABLEAU DE BORD.xlsm" 
Set extWb5 = Workbooks.Open("C:\xxx")
'Sélectionne la feuille de calcul""Calendar"" du classeur "" TABLEAU DE BORD.xlsm
Set extWs5 = extWb5.Sheets("Calendar")

Dim dDtInit2 As Date
    Dim nIColCD2 As Long          ' colonne de currentdate
    Dim nICol2 As Long
    Dim nIColDepense2 As Long     ' colonne dépense (colonne revenus = +

Dim currentDate2 As Date
Dim val5() As Double ' declarer val5 comme un tableau a  deux dimensions

'Obtenir la date actuelle
currentDate2 = Date

' Calcul de la colonne de l'ongl""Calendrier"" à partir de la 1ere date du calendrier et de la current
dDtInit2 = extWs5.Range("A1").Value
nIColCD2 = Month(currentDate2) + ((Year(currentDate2) - Year(dDtInit2)) * 12)

'Redimensionner le tableau ""val5"" pour correspondre au nombre de colonnes
ReDim val5(1 To nIColCD2)

' Récupération des val
For nICol2 = 1 To nIColCD2
   val5(nICol2) = extWs5.Cells(4, nICol2).Value
Next

' Colle la valeur récupérer du tableau SUIVI selon supérieur ou inférie
' On commence à la colonne dÃ""F"" et on va de 5 en 5 colonnes (6, 11, 16, .
' la colonne revenus est la colonne dépense +
   Set ws = ThisWorkbook.Worksheets("flux")
   nIColDepense2 = 6
   With ws
      For nICol2 = 1 To nIColCD2
         .Cells(7, nIColDepense2).Value = IIf(val5(nICol2) < 0, val5(nICol2), """")
         .Cells(7, nIColDepense2 + 1).Value = IIf(val5(nICol2) >= 0, val5(nICol2), """")
         nIColDepense2 = nIColDepense2 + 5
      Next
   End With

' Ferme le classeur ""TABLEAU DE BORD.xlsm"" sans l'enregistrer
extWb4.Close SaveChanges:=False

Tu alimentes un tableau nommé Val5

For nICol2 = 1 To nIColCD2
   val5(nICol2) = extWs5.Cells(4, nICol2).Value
Next

et ensuite tu utilises Val4 ...

.Cells(7, nIColDepense2).Value = IIf(val4(nICol2) < 0, val4(nICol2), """")
.Cells(7, nIColDepense2 + 1).Value = IIf(val4(nICol2) >= 0, val4(nICol2), """")

J'ai edit le post, mais tu n'as pas vu c'est ma faute, j'avais fais cette erreur je l'ai corrigé, donc j'importe bien ma valeur dans la bonne cellule, mais l'erreur persiste... et empeche le reste du code de dérouler, ca me renvois aussi un " dans la celulle de destination référencé comme "dépense" ...

J'ai bien mes 238.02... mais je comprend pas pourquoi.. ci joint image du " (a gauche du 238) et du code erreur avec la mise en forme du tableau

image image
Corriges dDtInit2 = extWs5.Range("A1").Value par dDtInit2 = CDate("01-" & extWs5.Range("A1").Value)

J'avais mis un commentaire dans le code du fichier "ajoutclient2.xlsm" ...

Si ça plante encore, déroules le code en mode pas à pas, tu sauras exactement à quelle ligne ça plante.

Ca ne regle pas le soucis, je ne sais meme pas faire en mode pas a pas comment j'accede a ca, j'ai essayé mais ca deroule la macro sans s'arreter...

1 - Tu vas sur le code de la procédure incriminée, sur la 1ère ligne qui suit les déclarations de variables currentDate2 = Date, tu appuie sur F9, cela va positionner un point d'arrêt symbolisé par un point rouge dans la marge et la ligne est surlignée en rouge (le déroulement du code s'arrêtera avant d'exécuter les instructions de de la ligne).

2 -

Si le code se plante à l'ouverture du classeur, tu as donc créé une procédure qui est appelée à l'ouverture du classeur. Va dans le module associé à ThisWorkbook, localises la procédure Workbook_Open, positionnes toi sur la ligne "Sub Workbook_Open()" et appuie sur F8, la ligne s'éclaire en jaune. A chaque fois que tu appuies sur F8, tu exécutes la ligne de code sélectionnée en jaune et la prochaine ligne de code à exécuter est sélectionnée. Déroules le code jusqu'à ce que tu obtiennes le message d'erreur.

SI le code incriminée est ailleurs (formulaire ?), fais les opérations qui vont te conduire jusqu'à la procédure qui plante, le code arrêtera de s'exécuter au point d'arrêt et tu auras la main pour le dérouler pas à pas à l'aide la touche F8.

merci pour tes explications qui m'on permis d'effectuer en pas à pas, et de me rendre compte que le problème était lors de la fermeture du classeur ouvert, ws4 au lieu de ws5 super...

Ca m'apprendra à me relire...

Merci pour tout du coup puisque tu à quasi fais mes tableaux tout seul mdr. Logiquement j'en ai finis avec le VBA pour l'instant il me reste les choses "simples" mais j'hésite pas au cas ou, t'es un vrai boss ! M E R C I

Rechercher des sujets similaires à "recuperer valeurs fonction date"