Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Selection.ClearContents

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Evelynetfrancois

XLDnaute Impliqué
Bonjour tout le monde ......

Dans mon programme j ai sur un bouton

Private Sub CommandButton2_Click()
Selection.ClearContents
End Sub

Qui me renvoie automatiquement sur la macro suivante,( puisqu il y a changement !!) mais cette macro contient un MsgBox

Private Sub Worksheet_Change(ByVal Target As Range)
............
..........
MsgBox.........................................
End Sub

Est t il possible de contourner cette macro uniquement lorsque je clear ma feuille ?pour ne pas avoir cette MsgBox ?
puis-je rajouter une ligne "mystere" dans Private Sub CommandButton2_Click()?

bonne journée
E et F
 
Re : Selection.ClearContents

Bonjour,

une solution simple qui devrait résoudre ton pb :
Utiliser une variable publique
Public Flag as Boolean


Code:
Private Sub CommandButton2_Click()
Selection.ClearContents
Flag = 1
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
............
If Flag = 0 then
       MsgBox.........................................
End if
Flag = 0
End Sub
Cordialement
 
Re : Selection.ClearContents

Bonjour

tu peux créer une variable public de type boolean

et tu fais unt ruc du genre

Private Sub CommandButton2_Click()
MonTest=true
Selection.ClearContents
End Sub



Private Sub Worksheet_Change(ByVal Target As Range)
if montest=true then
montest=false
else
............
..........
MsgBox.........................................
end if
End Sub

et en début d'un module

Public Montest as boolean
 
Re : Selection.ClearContents

Oups excuse spitnolan pas vu

Par contre je pense qu'il faut mettre ta variable à true avant le clearcontents car ta macro evenementielle se déclenche juste à cemoment là et donc dans ton cas ton flag et encore à 0
 
Re : Selection.ClearContents

Re,
Bonjour Pascal,

Oui effectivement, à la lecture de ta réponse, je me suis fais la même réflexion...
Mais si Evelynetfrancois veut bien tester les 2 possibilités, car je m'interroge sur le fait que la 1ere sub se termine avant de lancer la sub événementielle.

Bien cordialement
 
Re : Selection.ClearContents

re

je viens de faire un test et la première sub ne se termine pas tu enclanches l'evenementielle sur le clearcontents.

Donc il faut bien mettre le boolean à true avant le clear
 
Re : Selection.ClearContents

Salut Evelyne
Bonjour Pascal,Spitnolan08
Bonjour le Forum
est il possible d'utiliser par exemple
Application.EnableEvents ?????????
Code:
 Private Sub CommandButton2_Click()
[COLOR=Blue]Application.EnableEvents=False[/COLOR]
        Selection.ClearContents
[COLOR=Blue]Application.EnableEvents=True[/COLOR]
End Sub
Merci D'avance 😀

Bonne Journée
 
Re : Selection.ClearContents

Salut Jean-Marie

Plaisir de te recroiser

Oui on peut tout à fait l'utiliser mais c'est vrai que je le fais rarement toujours la frousse d'une plante entre 2

Bonne journée
 
Re : Selection.ClearContents

RE
je vous joint les deux macros , car moi je comprends pas , !!!
merci pour toutes vos aides !!

E et F


Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Range("D3:E600").Activate
Selection.ClearContents
Range("A3:F600").Select
Selection.Sort Key1:=Range("B3"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.ScreenUpdating = True
Range("A3").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("E3:E65536")) Is Nothing Then
RETOUR = MsgBox("Voulez-vous valider cette commande ", 4 + vbInformation, " V A L I D A T I O N ")
If RETOUR = vbYes Then
Application.ScreenUpdating = False
Range("A" & ActiveCell.Row & ":F" & ActiveCell.Row).Copy
Sheets("Fiche").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End If
End If
End Sub
 
Re : Selection.ClearContents

re
Moi de même Pascal et j'en profite pour te remercier du travail que tu fais pour nous 😉

après test ça fonctionne, mais effectivement vaut mieux être prudent Lol
Bonne journée
 
Re : Selection.ClearContents

Bonjour à tous,

une autre solution, si j'ai bien compris :

(tester que la cellule modifiée ne soit pas vide)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("E3:E65536")) Is Nothing Then
if Target <> "" then
RETOUR = MsgBox("Voulez-vous valider cette commande ", 4 + vbInformation, " V A L I D A T I O N ")
If RETOUR = vbYes Then
Application.ScreenUpdating = False
Range("A" & ActiveCell.Row & ":F" & ActiveCell.Row).Copy
Sheets("Fiche").Range("A65536").End(xlUp).Offset(1 , 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End If
End If
end If
End Sub

bon après midi
@+
 
Re : Selection.ClearContents

Re tous,
Bonjour Jean-Marie,

Pour répondre à ton help, si la solution de pierrot93 ne fonctionne pas ou ne te convient pas, et après avoir déclarée la variable Flag en public en tête d'un modulel :
Code:
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Range("D3:E600").Activate
Flag= 1
Selection.ClearContents
Range("A3:F600").Select
Selection.Sort Key1:=Range("B3"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.ScreenUpdating = True
Range("A3").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Flag = 0 Then
If Not Application.Intersect(Target, Range("E3:E65536")) Is Nothing Then
RETOUR = MsgBox("Voulez-vous valider cette commande ", 4 + vbInformation, " V A L I D A T I O N ")
If RETOUR = vbYes Then
Application.ScreenUpdating = False
Range("A" & ActiveCell.Row & ":F" & ActiveCell.Row).Copy
Sheets("Fiche").Range("A65536").End(xlUp).Offset(1 , 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End If
End If
End if
Flag = 0
End Sub
Cordialement
 
Re : Selection.ClearContents

Merci beaucoup pour votre aide mais aucune ne fonctionne chez moi
pourtant la soluce de pierrot semblait simple et efficace mais elle beugue sur if Target <> "" then
je continu a chercher
si je trouve j envoie la soluce
bonne soirée et encore merci pour tout
E et F
 
Re : Selection.ClearContents

BONSOIR CHTI
oui c est ca ,dans tout les cas ma MsgBox apparait !!!
sinon
après avoir déclarée la variable Flag en public en tête d'un modulel :comme me dit Spitnolan08 ca veut dire quoi ??


merci
E et F
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
508
Réponses
4
Affichages
521
Réponses
2
Affichages
274
Réponses
4
Affichages
586
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…