Erreur execution 13

Bonjour,

je rencontre une erreur d'exécution 13 "incompatibilité de type" dans la formule ci dessous. Impossible de voir d'ou cela provient. Merci par avance pour votre aide

Private Sub Worksheet_Activate()
Dim tbU, newtbU() 'définit les tableaux de valeurs
Dim i%, k%, lig%, x%
Dim wsh, sh As Worksheet
Dim lo As ListObject

Application.ScreenUpdating = False

wsh = Array("Chirurgie1", "Chirurgie2", "UCA", "Bloc", "Caisson", "Anapath", "CS") 'tu peux rajouter des feuilles ici(tableau contenant le nom des feuilles à traiter)
Set lo = Sheets("Absences").ListObjects("tb_absences") 'définit le tableau structuré de la feuille Absences (nommé tb_absences)

With lo
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete 'efface les données de la feuille Absences
End With

For x = LBound(wsh) To UBound(wsh) 'boucle sur chaque nom du tableau wsh
For Each sh In ThisWorkbook.Worksheets 'boucle sur chaue feuille du classeur
If sh.Name Like wsh(x) Then 'si le nom de la feuille du classeur fait partie du tableau wsh
tbU = sh.Range("E4:S" & sh.Range("E" & Rows.Count).End(xlUp).Row) 'on définit le tableau de données
k = 0 '............................................index de départ
ReDim newtbU(0 To UBound(tbU, 1), 1 To 7) '........on crée un tableau temporaire
For i = 1 To UBound(tbU, 1) '.....................on boucle sur les lignes du tableau de données
If tbU(i, 1) <> "" And tbU(i, 5) <> "" Then '....si Nom/prénom et Absences remplis
newtbU(k, 1) = tbU(i, 1) 'nom prénom
newtbU(k, 2) = sh.Name 'service
newtbU(k, 3) = tbU(i, 2) 'grade
newtbU(k, 4) = tbU(i, 5) 'absence
newtbU(k, 5) = tbU(i, 6) 'début absence
newtbU(k, 6) = tbU(i, 7) 'fin absence
newtbU(k, 7) = tbU(i, 11) 'remplacé par
k = k + 1 '................incrémente l'index
End If
Next i '......................prochaine ligne du tableau de valeur
If k > 0 Then '..............si tableau temporaire comporte au moins 1 ligne
On Error Resume Next
With lo
.ListRows.Add '............rajoute une ligne au tableau de la feuille Absences
lig = .ListColumns(1).Range.Find("", SearchDirection:=xlNext).Row '...définit la première ligne vide
Sheets("Absences").Range("B" & lig).Resize(k, 7).Value = newtbU '.....écrit les données du tableau temporaire
End With
End If
End If
Next sh '...................................................................prochaine feuille du classeur
Next x '.....................................................................prochaine valeur du tableau wsh

Erase tbU: Erase tbV: Set wsh = Nothing '......................................efface tous les tableaux (libère la mémoire)
End Sub

Bien cordialement

Bonjour MANGO19, le forum,

Sur quelle ligne de code se situe le problème ?

Erase tbV   ' ce tableau n'existe pas ! En revanche newtbU....

Utilise les balises pour faciliter la lecture du code, stp.

image

Cordialement,

Bonjour,

merci pour votre réponse mais je suis loin d'être une experte du coup je ne comprends pas ce qui faut faire

Si vous pouviez me donner un exemple

Merci par avance

Cordialement

Re,

Lorsque le code plante, une ligne est surlignée en jaune, elle indique où se situe l'erreur dans le code lorsque tu cliques sur débogage...

image

Sur cette ligne de code:

Erase tbU: Erase tbV: Set wsh = Nothing '......................................efface tous les tableaux (libère la mémoire)

tbV n'existe pas, mais tu utilises newtbU

Dim tbU, newtbU() 'définit les tableaux de valeurs

, donc :

Erase tbU: Erase newtbU: Set wsh = Nothing '......................................efface tous les tableaux (libère la mémoire)

Cordialement,

Rechercher des sujets similaires à "erreur execution"