Erreur de Type 13 dans Macro
GG
-
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'essaye d'adapter une macro à mon utilisation.
La macro me permet uniquement d'afficher une valeur par défaut sur une plage de cellule (si celles-ci sont vides) et d'effacer la valeur par défaut si je sélectionne une cellule, de cette même plage, pour y saisir une date.
Voici le code
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "W21:W43" Then
If Target.Value = "ASAP" Then Target.Value = ""
ElseIf Range("W21:W43").Value = "" Then
Range("W21:W43").Value = "ASAP"
End If
End Sub
L'erreur de type 13 Incompatible apparaît sur cette ligne :
ElseIf Range("W21:W43").Value = "" Then
Je vous remercie par avance à tous.
J'essaye d'adapter une macro à mon utilisation.
La macro me permet uniquement d'afficher une valeur par défaut sur une plage de cellule (si celles-ci sont vides) et d'effacer la valeur par défaut si je sélectionne une cellule, de cette même plage, pour y saisir une date.
Voici le code
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "W21:W43" Then
If Target.Value = "ASAP" Then Target.Value = ""
ElseIf Range("W21:W43").Value = "" Then
Range("W21:W43").Value = "ASAP"
End If
End Sub
L'erreur de type 13 Incompatible apparaît sur cette ligne :
ElseIf Range("W21:W43").Value = "" Then
Je vous remercie par avance à tous.
A voir également:
- Erreur de Type 13 dans Macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Fifa 13 - Télécharger - Jeux vidéo
- Test redmi note 13 5g - Accueil - Téléphones
- Jitbit macro recorder - Télécharger - Confidentialité
- Type de ram - Guide
13 réponses
Bonjour,
Tu oublie un End If et dispose mal tes conditions.
A+
Tu oublie un End If et dispose mal tes conditions.
If Target.Address = "W21:W43" Then
If Target.Value = "ASAP" Then
Target.Value = ""
ElseIf Range("W21:W43").Value = "" Then
Range("W21:W43").Value = "ASAP"
End If
End If
A+
Le code que je t'ai montré concerne la deuxième partie de ce que tu cherche.
Pour remplir toute la plage fait le manuellement pour commencer
Ensuite supprime tout le code de la feuille et remplace-le par celui-ci
Pour remplir toute la plage fait le manuellement pour commencer
Ensuite supprime tout le code de la feuille et remplace-le par celui-ci
Dim AncCel As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("W21:W43")) Is Nothing Then
'Une seule cellule comprise dans W21:W43 a été sélectionnée
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target.Value = "ASAP" Then
Target.Value = ""
Set AncCel = Target
'Target.Activate
ElseIf Target.Value = "" Then
Target.Value = "ASAP"
End If
ElseIf AncCel = "" Then
AncCel.Value = "ASAP"
End If
Application.EnableEvents = True
End Sub
C'est à la première utilisation.
Refait le code..
Refait le code..
Dim AncCel As RangeA+
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("W21:W43")) Is Nothing Then
'Une seule cellule comprise dans W21:W43 a été sélectionnée
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target.Value = "ASAP" Then
Target.Value = ""
Set AncCel = Target
ElseIf Target.Value = "" Then
Target.Value = "ASAP"
End If
ElseIf AncCel = "" Then
AncCel.Value = "ASAP"
End If
Application.EnableEvents = True
End Sub
Ce sont des cellules fusionnées....
Modifie la ligne
If Target.Count > 1 Then Exit Sub
par
If Target.Count <> 3 Then Exit Sub
Et ça fonctionnera.
Si problème enfin résolu, oublie pas de mettre le topic en "Résolu" (En haut gauche de ta question initiale).
A+
Modifie la ligne
If Target.Count > 1 Then Exit Sub
par
If Target.Count <> 3 Then Exit Sub
Et ça fonctionnera.
Si problème enfin résolu, oublie pas de mettre le topic en "Résolu" (En haut gauche de ta question initiale).
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est-à-dire ? Car je maîtrise le VBA très succinctement !
J'ai juste adapté le code qui était que pour une unique cellule au départ !
J'ai juste adapté le code qui était que pour une unique cellule au départ !
Re,
C'est bien ce que je pensais, serais plutôt dans le genre..
Essaye
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
C'est bien ce que je pensais, serais plutôt dans le genre..
Essaye
Private Sub Worksheet_Change(ByVal Target As Range)A+
If Not Intersect(Target, Range("W21:W43")) Is Nothing Then
'Une seule cellule comprise dans W21:W43 a été modifiée
If Target.Value = "ASAP" Then
Target.Value = ""
ElseIf Target.Value = "" Then
Target.Value = "ASAP"
End If
End If
End Sub
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
J'ai une erreur d'incompatibilité dans ton nouveau code sur la ligne:
"If Target.Value = "ASAP" Then"
Dois-je placer le code dans un module ?ou sur la feuille même ?
Pour rappel :
Moi je veux que le code m'affiche par défaut dans les cellules W21 à W43 "ASAP" en italique !
Ensuite dès que je sélectionne une des cellules, "ASAP" s'efface uniquement dans la cellule sélectionnée pour que je puisse saisir ma nouvelle valeure !
Merci encore !
"If Target.Value = "ASAP" Then"
Dois-je placer le code dans un module ?ou sur la feuille même ?
Pour rappel :
Moi je veux que le code m'affiche par défaut dans les cellules W21 à W43 "ASAP" en italique !
Ensuite dès que je sélectionne une des cellules, "ASAP" s'efface uniquement dans la cellule sélectionnée pour que je puisse saisir ma nouvelle valeure !
Merci encore !
Le code doit être placer dans le module de la feuille concernée.
Pour le fonctionnement c'est bien ce que je pensais et c'est (en principe) ce que tu veux.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Pour le fonctionnement c'est bien ce que je pensais et c'est (en principe) ce que tu veux.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Ok ! Mais ca ne fonctionne pas !
Je colle le code dans le module de la feuille, je retourne sur ma feuille, et dans la plage W21:W43, il n'y a pas "ASAP" !!
Qu'est-ce que je fais mal ?
Je colle le code dans le module de la feuille, je retourne sur ma feuille, et dans la plage W21:W43, il n'y a pas "ASAP" !!
Qu'est-ce que je fais mal ?
J'ai remplis manuellement mes cellules avec "ASAP" (W21:W43).
J'ai collé le code dans le module de la feuille.
Avec le nouveau code j'ai une erreur d'exécution 424 "Objet requis" pour la ligne :
AncCel.Value = "ASAP"
J'ai collé le code dans le module de la feuille.
Avec le nouveau code j'ai une erreur d'exécution 424 "Objet requis" pour la ligne :
AncCel.Value = "ASAP"
Bon ca ne fonctionne toujours pas ! Je colle le code et rien ne se passe !
La mise en forme peut jouer ?
Voilà un lien du fichier où je veux que le code s'applique !
http://www.fichier-xls.fr/2013/11/14/forum/
Encore merci à toi de m'aider !
La mise en forme peut jouer ?
Voilà un lien du fichier où je veux que le code s'applique !
http://www.fichier-xls.fr/2013/11/14/forum/
Encore merci à toi de m'aider !
Je le savais ! J'aurais du spécifier ma mise en forme ! Je sais c'est une erreur de travailler en cellule fusionné !
Le code fonctionne :D !
Serait-il possible de modifier le code pour que je puisse commencer à écrire dans n'importe quelle cellule ? et pas uniquement les unes à la suite des autres ?
Le code fonctionne :D !
Serait-il possible de modifier le code pour que je puisse commencer à écrire dans n'importe quelle cellule ? et pas uniquement les unes à la suite des autres ?
Non, ça ne fonctionne pas convenablement avec des cellules fusionnées.
Tu pourrais enlevé la fusion sur ces cellules et mettre ASAP dans la colonne X en mettant l'alignement à "Centrer" ça revient au même.
Le code suivant fonctionnera normalement (j'espère)
PS : met pas +1 sur tout les codes, uniquement sur celui qui convient le mieux.
Tu pourrais enlevé la fusion sur ces cellules et mettre ASAP dans la colonne X en mettant l'alignement à "Centrer" ça revient au même.
Le code suivant fonctionnera normalement (j'espère)
Dim AncCel As RangeA+
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If AncCel Is Nothing Then
Set AncCel = Range("X21")
End If
If Not Intersect(Target, Range("X21:X43")) Is Nothing Then
'Une seule cellule comprise dans X21:X43 a été sélectionnée
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target.Value = "ASAP" Then
'Vérifie si ont n'a pas laisser une cellule vide dans la colonne X
If AncCel.Address <> Target.Address And AncCel.Value = "" Then
AncCel.Value = "ASAP"
End If
Target.Value = ""
Set AncCel = Target
ElseIf Target.Value = "" Then
Target.Value = "ASAP"
Set AncCel = Target
End If
'Vérifie si ont n'a pas laisser une cellule vide dans la sélection
'Quand ont sélectionne une cellule autre que dans colonne X
ElseIf AncCel.Value = "" Then
AncCel.Value = "ASAP"
End If
Application.EnableEvents = True
End Sub
PS : met pas +1 sur tout les codes, uniquement sur celui qui convient le mieux.
Je n'ai pas excel au moment ou je te répond ! Je testerais ça mardi !
Merci beaucoup