Erreur d'exécution 13 - Incompatibilité de type

Bonjour,

J'ai une erreur d'exécution 13 comme le titre l'indique, je vous joins mon code ci dessous.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns(1)) Is Nothing And Target <> "" Then Target.Offset(0, 1) = Date
End Sub

Je vous laisse deviner quelle ligne de code m'indique ou erreur ?
(Bien evidemment la ligne 2)

Merci d'avance a ceux qui prendront du temps pour m'aider.
En vous souhaitant une bonne journée à tous.

Bonjour,

Sur Excel 365 32 bits et sur Excel 365 64 bits > ton code fonctionne bien ...

ric

Bonjour,

Then Target.Offset(0, 1) = CDate(Now)

C'est étrange, le problème vient donc peut-être de la méthode de saisie ?
Pour saisir les informations j'utilise une douchette qui saisie les 3 informations en même temps et c'est donc à ce moment que l'erreur apparaît

Une idée du problème ?

Bonjour Xmenpl,

Merci pour ta réponse mais il semblerait qu'elle ne fonctionne pas, une erreur de syntaxe apparaît.
Au cas où tu n'aurais pas fait attention je suis sur Excel 365.

Merci tout de même pour le temps accordé à ma requête ^^

Bonjour,

Peut-être ainsi :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
If Not Application.Intersect(Target, Columns(1)) Is Nothing Then
    If Target.Count > 1 Then
        For Each Cel In Target
            If Cel <> "" Then Cel.Offset(0, 1) = Date
        Next Cel
    Else
        If Target <> "" Then Target.Offset(0, 1) = Date
    End If
End If
End Sub

Bonjour à tous,

Est-ce que ta macro est bien dans la feuille concernée ?

Elle ne doit pas être dans un module ...

ric

Bonjour Cousinhb29,

Ton code fonctionne bien sauf que la date s'affiche également a droite et a gauche de ma cellule désiré, le code ne doit pas prendre en compte uniquement la colonne 1 visiblement

ReBonjour ric,

Oui mon code est bien saisie sur la feuille concerné en Private Sub

En revanche je suis novice dans le VBA et je ne sais pas ce que signifie un module.

Un fichier pour test de votre propre code qui fonctionne chez nous.

Re-,

D'après un de tes fils récents, tu inscrits en A, B et C des données différentes par le biais d'un scan...

Précise bien le problème, ce que tu veux, et où tu le veux (dans cet autre fil, tu mettais la date 5 colonnes vers la droite...)

Et est-ce que les 3 entrées sont simultanées?

Bref, donne tous les détails possibles

Re Bonjour Cousinnb29,

Oui désolé j'aurais du mieux m'exprimer, mais pour exposer le plus de détailles :

J'entre 2 référence en A et B et une quantité en 3, les 3 cellules reçoivent l'information en simultanées par le biais d'une douchette qui scan les référence.
Ce procédé me sert a entrer des commandes, j'ai donc besoin d'un suivi des commandes selon les jours c'est pourquoi en effet j'ai besoin que la date de la commande apparaisse 5 colonne après en G.

J'a donc besoin que dès qu'un saisi est détecté soit en colonne A, B ou C, la date apparaisse en colonne G.

Encore désolé pour ma précédente explication trop vague j'espère que ces informations vous permettront de mieux m'aider.

Dans ce cas ; Si vous avez automatisé l'ajout de la quantité avec les douchettes en simultané ; alors il suffit de faire pareil pour la date ? pourquoi passer par un autre évenement.

L'ajout de la quantité n'est pas automatique il ce fait pas un saisi manuelle sur la douchette qui arrive après sur le tableur en colonne C.

Et automatisé l'ajout de la date via un saisi sur la douchette peut se faire mais ajouterai une manipulation "parasite" pour le salarié et lui ferrai perdre du temps.

Salut à tous...

Il se peut que Target te renvoie une plage de cellules

image
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Address
    If Not Application.Intersect(Target, Columns(1)) Is Nothing And Target <> "" Then Target.Offset(0, 1) = Date
End Sub

Changes Ton code comme ci-dessus, et regardes dans ta fenêtre d'exécution ce que te renvoie Debug.Print

Petite sub pour faire des test

Sub test()

    Range("A3") = "Toto"

    Range("A1:C1") = Array("toto", "titi", "")
End Sub

Re-,

Dans ce cas :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
If Not Application.Intersect(Target, Columns(1)) Is Nothing Then
    If Target.Count > 1 Then
        If Target(1) <> "" Then Target(1).Offset(, 6) = Date
    End If
End If
End Sub

Peut-être?

ou en plus simple :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns(1)) Is Nothing Then
    If Target(1) <> "" Then Target(1).Offset(, 6) = Date
End If
End Sub

Super, après quelques essais ca marche parfaitement,

Merci Beaucoup à tous ceux qui auront consacré du temps à mon problème.

Je vous souhaite une très bonne journée à tous !

Helmut

Rechercher des sujets similaires à "erreur execution incompatibilite type"