Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Incompatibilite de type vba

  • Initiateur de la discussion Initiateur de la discussion sevy1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sevy1

XLDnaute Occasionnel
Bonjour
j'ai un tableau contenant les dates TE et un nouveau sortie qui recoit la différence entre deux dates Ts je souhaite faire la differrence entre la date de la colonne F et celle de la colonne E ou la date du jour et celle de la colonne e si colonne f vide puis mettre le resultat dans la colonne N voici le draft de code mais j ai une erreur incompatibilité de type au niveau de la ligne rouge
Code:
Sub calcule()
Dim Ws As Worksheet, Te(), Ts(), L&
 Set Ws = Feuil6
 Te = Ws.[A3].Resize(Ws.[A30000].End(xlUp).Row - 1, 13).Value
 ReDim Ts(1 To UBound(Te, 1), 1 To 3)
 For L = 1 To UBound(Te, 1)
    If IsDate(Te(L, 6)) Then 'And IsDate(Te(L, 2)) Then
       Ts(L, 2) = Year(Te(L, 6))
       Ts(L, 3) = Month(Te(L, 6))
      If IsDate(Te(L, 6)) And IsDate(Te(L, 5)) Then
      [COLOR="#FF0000"]Ts(L, 1) = Te(L, 6) - Te(L, 5)[/COLOR]
      End If
      If Te(L, 6) = "" And IsDate(Te(L, 5)) Then
      Ts(L, 1) = Date - Te(L, 5)
      End If
     End If
     Next L
 Ws.[n3].Resize(UBound(Ts, 1), UBound(Ts, 2)).Value2 = Ts
End Sub
 
Re : Incompatibilite de type vba

Bonjour
Merci considerer ce code
Code:
Sub calcule()
Dim Ws As Worksheet, Te(), Ts(), L&
 Set Ws = Feuil6
 Te = Ws.[A3].Resize(Ws.[A30000].End(xlUp).Row - 1, 13).Value
 ReDim Ts(1 To UBound(Te, 1), 1 To 3)
 For L = 1 To UBound(Te, 1)
    If IsDate(Te(L, 6)) Then 'And IsDate(Te(L, 2)) Then
       Ts(L, 2) = Year(Te(L, 6))
       Ts(L, 3) = Month(Te(L, 6))
      If IsDate(Te(L, 6)) And IsDate(Te(L, 5)) Then
      Ts(L, 1) = Te(L, 6) - Te(L, 5)
      End If
      If Te(L, 6) = "" And IsDate(Te(L, 5)) Then
      Ts(L, 1) = Date - Te(L, 5)
      End If
     End If
     Next L
 Ws.[n3].Resize(UBound(Ts, 1), UBound(Ts, 2)).Value2 = Ts
End Sub
C'est sur cette ligne que signale le message d'erreur
Code:
 Ts(L, 1) = Te(L, 6) - Te(L, 5)
Merci pour vos contributions
 
Re : Incompatibilite de type vba

Bonjour,

tu aurais plus de chances d'être aidé si tu déposes un fichier anonymisé (par le mode avancé) 🙂
De nombreux "helpeur" pourront alors lire et comprendre ce que tu veux faire 🙂

P.
 
Re : Incompatibilite de type vba

Bonjour sevy1.


Comme cela, peut-être ?​
Code:
Sub calcule()
Dim Ws As Worksheet, Te(), Ts(), L&
    Set Ws = Feuil6
    Te = Ws.[A3].Resize(Ws.[A30000].End(xlUp).Row - 1, 13).Value
    ReDim Ts(1 To UBound(Te, 1), 1 To 3)
    For L = 1 To UBound(Te, 1)
        If IsDate(Te(L, 6)) Then
            Ts(L, 2) = Year(Te(L, 6))
            Ts(L, 3) = Month(Te(L, 6))
            If IsDate(Te(L, 6)) And IsDate(Te(L, 5)) Then
                Ts(L, 1) = CDate(Te(L, 6)) - CDate(Te(L, 5))
            End If
        ElseIf Te(L, 6) = "" And IsDate(Te(L, 5)) Then
            Ts(L, 1) = Date - CDate(Te(L, 5))
        End If
    Next L
    Ws.[n3].Resize(UBound(Ts, 1), UBound(Ts, 2)).Value2 = Ts
End Sub
Mais sans voir les données, je ne suis sûr de rien.​


Bonne soirée.


ℝOGER2327
#7852


Dimanche 8 Palotin 142 (Saint Bougrelas, prince - fête Suprême Tierce)
8 Floréal An CCXXIII, 6,9372h - champignon
2015-W18-1T16:38:58Z
 
Dernière édition:
Re : Incompatibilite de type vba

salut

ôte moi d'un doute STP : tu as ce type d'erreur signalé quand, en E tu as autre chose qu'une date!
Avec le code de ROGER et dans ce contexte j'ai le message d'erreur mais pas avec
Code:
Sub calcule()
  Dim Ws As Worksheet, Te(), Ts(), L&
  Set Ws = Feuil6
  Te = Ws.[A3].Resize(Ws.[A30000].End(xlUp).Row - 1, 6).Value '6 suffit avec les colonnes  de date
  ReDim Ts(1 To UBound(Te, 1), 1 To 3)
  For L = 1 To UBound(Te, 1)
    If IsDate(Te(L, 6)) Then
      Ts(L, 2) = Year(Te(L, 6)):    Ts(L, 3) = Month(Te(L, 6))
      If IsDate(Te(L, 5)) Then Ts(L, 1) = Te(L, 6) - Te(L, 5)
    Else
      If IsDate(Te(L, 5)) Then Ts(L, 1) = Date - Te(L, 5)
    End If
  Next
  Ws.[N3].Resize(UBound(Ts, 1), UBound(Ts, 2)).Value2 = Ts
End Sub

Mais je ne trompe peut-être de contexte ?
 

Pièces jointes

Re : Incompatibilite de type vba

Bonsoir.

Te = Ws.[A3].Resize(Ws.[A30000].End(xlUp).Row - 1, 13).Value
me parait incohérent. Un de ces deux :
Te = Ws.[A3].Resize(Ws.[A30000].End(xlUp).Row - 2, 13)
Te = Ws.[A2].Resize(Ws.[A30000].End(xlUp).Row - 1, 13)
me semblerait plus logique.

Possible que ça plantait sur les valeurs, probablement vides, de la ligne qui suivait la dernière.
 
Dernière édition:
Re : Incompatibilite de type vba

Suite à la remarque de Si..., j'ai corrigé une étourderie dans le code.
À Dranreb : je pense que le souci venait de ce que certaines dates sont en fait du texte. Ce qui n'empêche pas que la définition de Te est effectivement douteuse.

Bonne nuit.


ℝOGER2327
#7853


Dimanche 8 Palotin 142 (Saint Bougrelas, prince - fête Suprême Tierce)
8 Floréal An CCXXIII, 8,1261h - champignon
2015-W18-1T19:30:10Z
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
357
Réponses
10
Affichages
633
Réponses
5
Affichages
551
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…