cs_Berrot
Messages postés7Date d'inscriptionvendredi 12 décembre 2008StatutMembreDernière intervention20 juin 2009
-
18 juin 2009 à 17:19
cs_Berrot
Messages postés7Date d'inscriptionvendredi 12 décembre 2008StatutMembreDernière intervention20 juin 2009
-
19 juin 2009 à 06:47
Bonjour ou bonsoir à tous et merci d’avance pour l’intérêt que vous voudrez bien porter à mon problème.
Système d’exploitation:
Windows Vista.
Excel 2007.
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
J’ai une macro que je voudrais faire fonctionner comme suit :
Lorsque la plage de cellules F6 à T6 est vide et que je clique sur la cellule C6 il faut que rien ne se passe sur F6 à T6 et que la MsgBox n’apparaisse pas et que l’on puisse saisir dans la cellule C6.
Ensuite lorsque, une, plusieurs, ou toutes les cellules de la plage F6 àT6 est ou sont remplies et que je clique sur la cellule “C6“ une MsgBox apparaisse. «si vous voulez modifier le contenu de cette cellule la ligne 6 sera effacée» : si on clique sur non rien ne se passe et “F6“ est sélectionnée. Si on clique sur oui, “C6“ et “ F6 à T6“ sont effacées. Cellule C6 sélectionnée.
DANS TOUS LES CAS AVANT DE RENSEIGNER UNE DES CELLULES DE LA PLAGE “F6 :T6“ IL FAUT QUE LA CELLULE “C6“ SOIT RENSEIGNEE (les cellules sont renseignées en numéro ou en chiffre).
Voici la macro que j’ai faite, elle fonctionne bien comme je désire, mais mon problème est qu’elle fonctionne si seulement une des cellules de la plage “F6 àT6“ est programmée.
Ex: If Range (“F6”) <> “” Then
(CELLULE “C6“ RENSEIGNEE, CELLULE “F6” VIDE, CLIC SUR “C6“ RIEN NE SE PASE ON PEUT SAISIR DANS “C6“.
CELLULE “F6” RENSEIGNEE, CLIC SUR “C6“ MsgBox. “si vous voulez modifier le contenu de cette cellule la ligne 6 sera effacée” CLIC SUR OUI, TOUT S’EFFACE, CELLULE “C6“ SELECTIONNEE.
CLIC SUR NON, RIEN NE SE PASSE, CELLULE “F6“ SELECTIONNEE.
Si je programme toute la ligne comme suit :
If Range (“F6 :T6 “) <> ““ Then
Lorsque j’exécute la macro en cliquant sur la cellule “C6“, une boîte de dialogue apparaît,
« Erreur d’exécution ‘13 ‘ incompatibilité de type »
Je clique sur débogage et : If Range (“ F6 :T6 “)<> ““ Then est surlignée en jaune.
Après plusieurs modification et recherche sur le Net, je n’ai pu résoudre ce problème.
Pouvez-vous me dire où se situe le problème ?
Encore merci pour votre aide.
Voici la macro sous ses trois aspects.
CELLE-CI FONCTIONNE BIEN MAIS QUE SUR UNE CELLULE
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plage As Range, Intersection As Range
Application.EnableEvents = False
Set Plage = Range("C6")
Set Intersection = Application.Intersect(Plage, Target)
If Not Intersection Is Nothing Then
If Range("F6") <> "" Then
Dim a As Long
a = MsgBox("si vous voulez modifier le contenu de cette cellule la ligne 6 sera effacée!", vbYesNo)
If a = (vbNo) Then
' il a cliqué sur NON
Range("F6").Select
ElseIf a = (vbYes) Then
' il a cliqué sur OUI
[C6:D6,F6:T6].ClearContents
End If
End If
End If
Application.EnableEvents = True
End Sub
CELLE-CI NE FONCTIONNE PAS
(DEBOGAGE)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plage As Range, Intersection As Range
Application.EnableEvents = False
Set Plage = Range("C6")
Set Intersection = Application.Intersect(Plage, Target)
If Not Intersection Is Nothing Then
If Range("F6:T6") <> "" Then
Dim a As Long
a = MsgBox("si vous voulez modifier le contenu de cette cellule la ligne 6 sera effacée!", vbYesNo)
If a = (vbNo) Then
' il a cliqué sur NON
Range("F6").Select
ElseIf a = (vbYes) Then
' il a cliqué sur OUI
[C6:D6,F6:T6].ClearContents
End If
End If
End If
Application.EnableEvents = True
End Sub
CELLE-CI FONCTIONNE, MAIS , MÊME SI LA PLAGE DE CELLULES (“F6 :T6“) EST VIDE ET QUE JE CLIQUE SUR “C6“ LA MsgBox S’AFFICHE ALORS QU’ELLE NE DEVRAIT PAS S’AFFICHER SI LA PLAGE DE CELLULES (“F6 :T6“) EST VIDE.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plage As Range, Intersection As Range
Application.EnableEvents = False
Set Plage = Range("C6")
Set Intersection = Application.Intersect(Plage, Target)
If Not Intersection Is Nothing Then
If Target.Cells = ("F61:T61") <> ("") Then
Dim a As Long
a = MsgBox("si vous voulez modifier le contenu de cette cellule la ligne 6 sera effacée!", vbYesNo)
cs_Berrot
Messages postés7Date d'inscriptionvendredi 12 décembre 2008StatutMembreDernière intervention20 juin 2009 19 juin 2009 à 06:47
Bonjour ou Bonsoir cnt
Exactement ce que je voulais.
La macro tourne super bien.
Sans ton aide je n'aurais jamais pu solutionner ce problème.
Heureusement qu'il y a des personnes comme toi qui consacre de leurs temps à des bricoleurs de la programmation comme moi.