XL 2013 VBA erreur d'execution 13 incompatibilité de type

  • Initiateur de la discussion Initiateur de la discussion jim7963
  • 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 !

jim7963

XLDnaute Junior
Bonjour à tous,

j'ai un petit soucis avec un code que j'ai écris.
J'ai fais la 1ère version suivante:
VB:
Sub report_donnees()

Application.ScreenUpdating = False

Dim dateRech As Date, Rg As Range, derLi As Long, valeur As Double

Dim nomBVP As Variant, idBVP As Integer
nomBVP = Array("00129114", "02062842", "02148633", "02148641")

Sheets("Données Finales").Select
dateRech = Cells(3, 3).Offset(0, -1)

Sheets("CA").Select
derLi = Columns(1).End(xlDown).Row
valeur = 0

For Each Rg In Range(Cells(2, 1), Cells(derLi, 1))
    If Rg.Value = dateRech Then
        For idBVP = LBound(nomBVP) To UBound(nomBVP)
            If Rg.Offset(0, 1).Value = nomBVP(idBVP) Then
                valeur = valeur + Rg.Offset(0, 2).Value
            End If
        Next
    End If
Next

Sheets("Données Finales").Select
Cells(3, 3).Value = valeur

Application.ScreenUpdating = True

End Sub

Celui-ci fonctionne très bien, aucun soucis.

Maintenant je lui ai apporté quelques modifications pour qu'il applique mon calcul à toutes les lignes qui comprenne une date dans ma cellule. J'ai donc écris:
VB:
Sub report_donnees()

Application.ScreenUpdating = False

Dim dateRech As Date, Rg As Range, Rg2 As Range, derLi As Long, derLi2 As Long, valeur As Double

Dim nomBVP As Variant, idBVP As Integer
nomBVP = Array("00129114", "02062842", "02148633", "02148641")

valeur = 0
Sheets("CA").Select
derLi = Columns(1).End(xlDown).Row

Sheets("Données Finales").Select
derLi2 = Columns(1).End(xlDown).Row

For Each Rg In Range(Cells(3, 3), Cells(derLi2, 3))
    dateRech = Rg.Offset(0, -1)
    For Each Rg2 In Sheets("CA").Range(Cells(2, 1), Cells(derLi, 1))
        If Rg2.Value = dateRech Then
            For idBVP= LBound(nomBVP) To UBound(nomBVP)
                If Rg2.Offset(0, 1).Value = nomBVP(idBVP) Then
                    valeur = valeur + Rg2.Offset(0, 2).Value
                End If
            Next idBVP
        End If
    Next Rg2
    Rg.Value = valeur
    valeur = 0
Next Rg

Application.ScreenUpdating = True

End Sub

Et là le code plante au niveau de la ligne:
dateRech = Rg.Offset(0, -1)
J'ai droit à une erreur d'execution 13 - incompatibilité de type.

Je n'arrive pas à comprendre à quoi cela est dû, si quelqu'un pouvait m'éclairer.

En vous remerciant par avance.
 
Bonjour jim7963,
Et là le code plante au niveau de la ligne:
dateRech = Rg.Offset(0, -1)
J'ai droit à une erreur d'execution 13 - incompatibilité de type.

Je n'arrive pas à comprendre à quoi cela est dû, si quelqu'un pouvait m'éclairer.
C'est simple : dateRech est déclarée As Date.

Avec dateRech = Rg.Offset(0, -1) il y a forcément bug si Rg.Offset(0, -1) n'est pas une date.

Il faut donc déclarer dateRech Variant (ne rien préciser) et tester la variable avec IsDate(dateRech).

A+
 
Bonjour et merci pour la réponse.

Une bonne nuit ayant passé, j'ai les idées plus claires.
Je m'étais focalisé sur la ligne d'erreur sauf que je n'avais pas vu qu'en fait le problème venait en fait d'une autre ligne:
derLi2 = Columns(1).End(xlDown).Row
En fait la 1ère ligne était vide et donc ma commande calculait mal ma recherche de dernière ligne.
J'ai fais la modif nécessaire et maintenant ça fonctionne.

Encore merci pour tout
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
257
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
84
Réponses
1
Affichages
323
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
234
Réponses
2
Affichages
411
Retour