Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Où est mon erreur?

5 réponses
Avatar
JBF
Bonsoir,

Qq'un peut me dire où est mon erreur dans la macro ci-dessous. J'ai un
message d'erreur : Erreur exécution '13'.

Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de
valeur
'condition : si le changement se fait ailleurs que dans la colonne F de
Previsionnel alors la macro sort de la procédure
Sheets("previsionnel").Select
If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
bouton_transformation_du_devis_en_facture
If Target.Value <> """" Then
Module4.bouton_transformation_du_devis_en_facture
End Sub

Le message d'erreur me surligne en jaune l'vant derniere ligne de la macro :
If Target.Value <> """" Then

Comme je débute en VBA je ne comprends pas de quelle erreur il s'agit.

Merci pour votre aide.

JBF

5 réponses

Avatar
michdenis
Est-ce que dans macro est inscrite dans le module
feuille "previsionnel" parce que procédure utilisée
est événementielle et tu n'as pas besoin de ceci :
Sheets("previsionnel").Select

Car la macro est supposé d'être dans la bonne feuille déjà.
Ainsi target et la plage définie Range("F2:F65000") font
aussi parti de la feuille où le code est utilisé.

Il ne fait aucun sens d'utiliser une procédure événementielle
et vouloir avoir un effet (une action) sur une autre feuille de calcul.



"JBF" a écrit dans le message de news:

Bonsoir,

Qq'un peut me dire où est mon erreur dans la macro ci-dessous. J'ai un
message d'erreur : Erreur exécution '13'.

Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de
valeur
'condition : si le changement se fait ailleurs que dans la colonne F de
Previsionnel alors la macro sort de la procédure
Sheets("previsionnel").Select
If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
bouton_transformation_du_devis_en_facture
If Target.Value <> """" Then
Module4.bouton_transformation_du_devis_en_facture
End Sub

Le message d'erreur me surligne en jaune l'vant derniere ligne de la macro :
If Target.Value <> """" Then

Comme je débute en VBA je ne comprends pas de quelle erreur il s'agit.

Merci pour votre aide.

JBF
Avatar
Youky
Bonsoir,
je verrais bien
If Target.Value <> "" Then
au lieu de
If Target.Value <> """" Then

Youky
Avatar
JBF
Bonjour,

D'abord merci à toi et à Youky de vous être pencher sur mon "problème".

Ma macro est effectivement inscrite dans feuille "prévisionnel".
J'ai donc suivi ton conseil et j'ai supprimé ceci :
Sheets("prévisionnel").Select

Ça ne change rien.

Youky : que je mette
If Target.Value <> "" Then
ou
If Target.Value <> """" Then
ca ne change rien. j'ai toujours l'erreur d'"execution 13 sur cette ligne.

Pour vous en dire un peu plus sur l'utilité et le besoin de cette macro (où
d'une autre offrant le même resultat!)
J'ai un formulaire que je complete sur la page "Formulaire".
Quand je valide ce formulaire en cliquant sur un bouton, une macro ajoute
une ligne sur la page "Ne pas ouvrir" et les valeurs du formulaire sont
transposées dans les bonnes colonnes sur une même ligne.

Ensuite, et c'est là que j'ai precisement besoin de vous, une macro
rattachée à la feuille "Previsionnel" ajoute une ligne lorsqu'une nouvelle
ligne est ajouté sur la page "Ne pas ouvrir" et recopie certaines cellules
de certaines colonnes.

Tout en ecrivant je suis entrain de me dire que j'ai bien compliqué la chose
et qu'il faudrait que j'ajoute une condition à ma macro rattachée à mon
Formulaire pour que s'ajoute en même temps les valeurs que je valide en
cliquant sur le bouton.

Tout ça est peut être un peu confus et je m'en excuse mais je me suis mis au
VBA pour la premiere fois en début de semaine.
J'essaye d'apprendre sur le tas.

Je vais essayer de modifier ça ce week-end et je reviendrais vers vous en
début de semaine pour ne pas vous solliciter inutilement.


Merci à vous

JBF


"michdenis" a écrit dans le message de news:

Est-ce que dans macro est inscrite dans le module
feuille "previsionnel" parce que procédure utilisée
est événementielle et tu n'as pas besoin de ceci :
Sheets("previsionnel").Select

Car la macro est supposé d'être dans la bonne feuille déjà.
Ainsi target et la plage définie Range("F2:F65000") font
aussi parti de la feuille où le code est utilisé.

Il ne fait aucun sens d'utiliser une procédure événementielle
et vouloir avoir un effet (une action) sur une autre feuille de calcul.



"JBF" a écrit dans le message de news:

Bonsoir,

Qq'un peut me dire où est mon erreur dans la macro ci-dessous. J'ai un
message d'erreur : Erreur exécution '13'.

Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement
de
valeur
'condition : si le changement se fait ailleurs que dans la colonne F de
Previsionnel alors la macro sort de la procédure
Sheets("previsionnel").Select
If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
bouton_transformation_du_devis_en_facture
If Target.Value <> """" Then
Module4.bouton_transformation_du_devis_en_facture
End Sub

Le message d'erreur me surligne en jaune l'vant derniere ligne de la macro
:
If Target.Value <> """" Then

Comme je débute en VBA je ne comprends pas de quelle erreur il s'agit.

Merci pour votre aide.

JBF




Avatar
michdenis
| Ma macro est effectivement inscrite dans feuille "prévisionnel".
| J'ai donc suivi ton conseil et j'ai supprimé ceci :


La macro qui suit ne provoque aucune erreur à partir des tests effectués
si tu as placé le code dans la bonne feuille :

'----------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'à chaque changement de valeur
'condition : si le changement se fait ailleurs
'que dans la colonne F de
'Previsionnel alors la macro sort de la procédure

If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
'bouton_transformation_du_devis_en_facture
If Target.Value <> "" Then
'Module4.bouton_transformation_du_devis_en_facture
MaMacro
End If
End Sub
'----------------------------------------------
Avatar
michdenis
En passant, Il se peut très bien que ton erreur soit générée
par l'appel de la macro :

Module4.bouton_transformation_du_devis_en_facture

Ce n'est pas l'appel de la macro qui est problématique mais
plutôt son exécution. Comme tu n'as pas publié son code, il
est impossible de dire si c'est effectivement le cas.

La macro qui suit ne provoque aucune erreur à partir des tests effectués
si tu as placé le code dans la bonne feuille :

'----------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'à chaque changement de valeur
'condition : si le changement se fait ailleurs
'que dans la colonne F de
'Previsionnel alors la macro sort de la procédure

If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
'bouton_transformation_du_devis_en_facture
If Target.Value <> "" Then
Module4.bouton_transformation_du_devis_en_facture
End If
End Sub
'----------------------------------------------