Erreur '6' Dépassement de capacité [Résolu]

Signaler
-
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

Je souhaite insérer automatiquement les dates manquantes voici le fichier excel sur lequel je travail: http://cjoint.com/?CDiosKpPr2C

une personne m'a aidé à avoir ce code sauf que he trouve lors de l'éxecution de ce code Erreur '6' Dépassement de capacité
voici le code
Option Explicit

Sub Remplissage()
Dim LastLig As Long, i As Long, j As Long, k As Long, m As Long
Dim n As Integer
Dim Tb, Res()

Application.ScreenUpdating = False
With Worksheets("Test")
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
Tb = .Range("A2:B" & LastLig)

ReDim Res(1 To 2, 1 To 1)
Res(1, 1) = CLng(Tb(1, 1))
Res(2, 1) = Tb(1, 2)
j = 1
For i = 2 To LastLig - 1
n = Diff(Tb, i)
m = j + n
ReDim Preserve Res(1 To 2, 1 To m)
For k = j + 1 To m
Res(1, k) = Suiv(Res(1, k - 1))
Res(2, k) IIf(n 1 Or k = m, Tb(i, 2), Tb(i - 1, 2))
Next k
j = m
Next i
With .Range("B2")
.Resize(j, 2) = Application.Transpose(Res)
.Resize(j, 1).NumberFormat = "dd/mm/yyyy"
End With
End With
End Sub

Private Function Diff(ByVal T, ByVal d As Long) As Byte
Dim Dte As Long, Der As Long


Der = CLng(T(d - 1, 1))
Dte = CLng(T(d, 1))


Diff = Evaluate("=NETWORKDAYS(" & Der & "," & Dte & ")") - 1


End Function

Private Function Suiv(ByVal Dte As Long) As Long

Suiv = Evaluate("=WORKDAY(" & Dte & ",1)")
End Function


merci

6 réponses

Messages postés
14652
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 février 2020
139
Bonjour,

VBA n'est pas VB6, je déplace.

Sur quelle ligne l'erreur ?

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site

Bonjour,
hé bien, tu remplaces la ligne:
n = Diff(Tb, i)


Par:
MsgBox "Tb " & Tb & " ; et i " & i & "... Ce sont des valeurs cohérentes? "
n = Diff(Tb, i)


D'ailleurs tu dis que Tb est égal à une range de plusieurs cellules (Tb = .Range("A2:B" & LastLig)), étrange...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Ok NHenry

c'est sur cette ligne :

Diff = Evaluate("=NETWORKDAYS(" & Der & "," & Dte & ")") - 1

Merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour,
Dim n As Integer
.....
n = Diff (Tb, i)
...
Private Function Diff(ByVal T, ByVal d As Long) As Byte

(sans autres commentaires, hein ...)
_______________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Ok merci à vous tous, c'est pris en compte et ca marche ;)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bon !
Soyons clairs :
c'est pris en compte et ca marche
*
on comprend le "c'est pris en compte" (donc le msgbox)
mais pas le "et ça marche" ...
Quelle a donc été le correction apportée ? En rappelant que l'on est sur un forum et que les solutions doivent être connues d'autres visiteurs.
J'y tiens !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.