erreur exécution 13 : incompatibilité de type

  • Initiateur de la discussion Olivier_HTP
  • Date de début
O

Olivier_HTP

Guest
Bonjour le Forum,

Dans le cadre de mon usine à gaz personnelle, je viens d'ajouter un code pour affichage auto 'en dur' de la date et de l'heure dans 2 colonnes. Ca fonctionne correctement, quand je saisis une valeur dans une cellule de la colonne B, la date et l'heure s'affichent bien dans les colonnes A et S.
MAIS, quand je teste mes anciennes macros, qui tournaient bien avant cet ajout, je n'ai pas de problème non plus à l'exception d'une macro qui me déclenche un message d'erreur d'exécution 13 'incompatibilité de type', et le débogueur surligne la ligne suivante dans mon code d'afficahage auto du temps :
If Target = '' Then

Le code (merci Jean-Marie !) concernant l'affichage auto date et heure est le suivant :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Intersect(Target, Range('B12:B10500')) Is Nothing Then: Exit Sub
If Target = '' Then
Target.Offset(0, 17) = ''
Target.Offset(0, -1) = ''
Else
Target.Offset(0, 17) = Time
'Date auto en colonne A :
Target.Offset(0, -1) = Now
End If
'End Sub

Et le code de la macro qui plante depuis l'ajout du code précédent est le suivant :

Sub TP()
'
Dim Ligne As Long
Dim Plage As String
Ligne = ActiveCell.Row
'Test pour éviter recopie accidentelle ligne de titre :
If Ligne > 11 Then
Plage = Range('F65536').End(xlUp).Offset(1, 0).Row
Range('B' & CStr(Ligne) & ':L' & CStr(Ligne)).Select
Selection.Copy
Range('B' & CStr(Plage)).Select
ActiveSheet.Paste
Range('B' & CStr(Ligne)).Select
Application.CutCopyMode = False
Columns(6).Find('*', , , , , xlPrevious).Offset(0, 1).Select
ActiveCell.Value = 'TP'
'Range('B12').Select
Columns(2).Find('*', , , , , xlPrevious).Offset(1, 0).Select
Else
Marep = MsgBox('Vous ne pouvez pas recopier cette ligne !', 1, 'US')
If Marep = vbOK Then
End If
End If

End Sub

Cette dernière macro a en fait pour but de copier la ligne active et de la coller dans la première ligne vide du tableau, en rajoutant 'TP' dans la colonne G.
Quand je sors du débogueur, la ligne a bien été recopiée, mais la mention TP ne figure pas dans la colonne G.

Merci d'avance de votre aide.

Bon dimanche à tous.

Olivier_HTP

Message édité par: Olivier_HTP, à: 21/08/2005 09:18
 

Olivier_HTP

XLDnaute Occasionnel
Bonjour Ti et merci de ta réponse.

Mais alors, pourquoi la date et l'heure s'affichent-elles correctement quand je saisis quelque chose dans la colonne B, et pourquoi mes autres anciennes macros ne plantent elles pas également ?
Ma plage Target contenant aussi plusieurs cellules dans ces cas là ...

Merci et bonne journée à toi.

Olivier_HTP
 

Humansoft

XLDnaute Occasionnel
Bonjour

Je pense que le problème vient d'un oubli de guillemets après les CSTR(Ligne):

Sub TP()
'
Dim Ligne As Long
Dim Plage As String
Ligne = ActiveCell.Row
'Test pour éviter recopie accidentelle ligne de titre :
If Ligne > 11 Then
Plage = Range('F65536').End(xlUp).Offset(1, 0).Row
Range('B' & CStr(Ligne) & ':L' & CStr(Ligne) & '').Select
Selection.Copy
Range('B' & CStr(Plage) & '').Select
ActiveSheet.Paste
Range('B' & CStr(Ligne) & '').Select
Application.CutCopyMode = False
Columns(6).Find('*', , , , , xlPrevious).Offset(0, 1).Select
ActiveCell.Value = 'TP'
'Range('B12').Select
Columns(2).Find('*', , , , , xlPrevious).Offset(1, 0).Select
Else
Marep = MsgBox('Vous ne pouvez pas recopier cette ligne !', 1, 'US')
If Marep = vbOK Then
End If
End If

End Sub

Fais un copier coller de ce code et re essaie

Bon courage et bon dimanche
Vincent
 

Humansoft

XLDnaute Occasionnel
Bonjour Olivier,

Je viens de réessayer le code et je n'ai aucun plantage.
Je remplis la colonne de # informations.
Je fais la même chose dans le colonne F
Je lance ensuite la macro et tout fonctionne .

Col B Col F Col G
2 2
5 5
6 6
5 5
45 45
235 235
355 355
25 25
52 52
656 656
36 36
25 25

Voilà le résultat après l'activation de ton code:

Col B Col F Col G
2 2
5 5
6 6
5 5
45 45
235 235
355 355
25 25
52 52
656 656
36 36
25 25
25 25 TP

Le curseur se retrouve ensuite en colonne B sous la dernière case pleine.

A moins que quelquechose m'est échapé. Sinon, post moi un fichier exemple afin que je comprenne mieux ton usine à gaz.

Bon courage

Vincent
 

Olivier_HTP

XLDnaute Occasionnel
Bonjour Vincent, le Forum,

Merci Vincent de ta ténacité pour m'aider à résoudre mon problème.

La macro que tu fais tourner fait effectivement bien son boulot dans ton exemple, à savoir qu'elle recopie la ligne courante (où se trouve la cellule active, et la colle à la première ligne vide, inscrit 'TP' en colonne G, et positionne la cellule active en colonne G de la ligne collée.

Cette macro tournait bien depuis plusieurs mois, mais le problème est qu'elle ne tourne plus depuis que j'ai ajouté le code qui met la date et l'heure automatiquement (code figurant dans mon premier post de ce fil). Il y a un conflit entre les 2, et je ne sais pas pourquoi.
Le message d'erreur 13 apparait quand la macro TP s'effectue, mais le débogueur renvoit à l'instruction If Target = '' Then du code de la date auto. C'est donc là que se situe le problème qui a pour effet d'emp^cher le complet déroulement de la macro TP(). Cette dernière ne s'exécute que partiellement : elle recopie bien la ligne active, la colle, mais ne recopie plus 'TP'....

Merci à toi et à ceux qui voudront bien me débloquer.

Bonne journée à tous,

Olivier_HTP
 

Humansoft

XLDnaute Occasionnel
Bonjour,

après plusieurs essais infructueux, l'erreur est renvoyée par le fait de coller plusieurs cellules ensembles.
Si le collage se passe bien, l'application lance ensuite la macro au niveau de la cellule soit:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Set isect = Application.Intersect(Target, Range('B12:B10500'))

If isect Is Nothing Then
Exit Sub
End If

If Target = '' Then ' Là est le problème.
Target.Offset(0, 17) = ''
Target.Offset(0, -1) = ''
Else
Target.Offset(0, 17) = Time
'Date auto en colonne A :
Target.Offset(0, -1) = Now
End If

End Sub

En effet, il n'accepte pas la vérification de la Target avec plusieurs cellules.

De ce fait, Target est vide mais la vérification plante en erreur 13 et on ne peux pas forcer l'écriture d'une valeur pour target.

Je continue mes recherches.

A+

Vincent
 

Humansoft

XLDnaute Occasionnel
Re Salut et bonjour le forum

Et ben voilà, à force de chercher, on finit par trouver une solution qui devrait te satisfaire.

Je te laisse essayer.

Sub TP()
'

Dim zs_Marep As String
Dim zl_Ligne As Long
Dim zs_Plage As String

zl_Ligne = ActiveCell.Row
'Test pour éviter recopie accidentelle zl_Ligne de titre :
If zl_Ligne > 11 Then
zs_Plage = Range('F65536').End(xlUp).Offset(1, 0).Row
Range('B' & CStr(zl_Ligne) & '').Select
Selection.Copy
Range('B' & CStr(zs_Plage) & '').Select
ActiveSheet.Paste
Range('C' & CStr(zl_Ligne) & '' & ':L' & CStr(zl_Ligne) & '').Select
Selection.Copy
Range('C' & CStr(zs_Plage) & '' & ':L' & CStr(zs_Plage) & '').Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range('B' & CStr(zs_Plage) & '').Select
Columns(6).Find('*', , , , , xlPrevious).Offset(0, 1).Select
ActiveCell.Value = 'TP'
'Range('B12').Select
Columns(2).Find('*', , , , , xlPrevious).Offset(1, 0).Select
Else
zs_Marep = MsgBox('Vous ne pouvez pas recopier cette zl_Ligne !', 1, 'US')
If zs_Marep = vbOK Then
End If
End If

End Sub


Bon courage et tiens moi au courant.

Vincent
 

Olivier_HTP

XLDnaute Occasionnel
Bonjour Vincent, le forum,

Vincent, j'ai encore un petit problème déclenchant la même erreur 13 au niveau de la même ligne de code :

Quand on recopie sur plusieurs lignes le nom (qui est dans la colonne B) la date ne s'inscrit pas automatiquement dans la colonne A, alors que l'heure quant à elle s'inscrit dans la bonne colonne !?
En revanche un copier/coller sur la cellule libre de la ligne d'en dessous entraine bien l'affichage de la date auto.

As tu une idée sur l'origine de ce sortilège ?

Merci d'avance pour ton aide.

Olivier_HTP
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87