PROBLEME D'IDENTIFICATION DE CELLULE

Résolu
cs_Berrot Messages postés 7 Date d'inscription vendredi 12 décembre 2008 Statut Membre Dernière intervention 20 juin 2009 - 18 juin 2009 à 17:19
cs_Berrot Messages postés 7 Date d'inscription vendredi 12 décembre 2008 Statut Membre Dernière intervention 20 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)




   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

2 réponses

cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
19 juin 2009 à 00:59
salut
il te faut tester les cellules une à une

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

    Dim a As Long, existe As Boolean
        For Each c In Range("F6:T6")
            If c.Value <> "" Then
                existe = True
                Exit For
            End If
        Next
       
        If existe Then
            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

CNTJC
3
cs_Berrot Messages postés 7 Date d'inscription vendredi 12 décembre 2008 Statut Membre Dernière intervention 20 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.

Encore mille fois merci pour tout.

Berrot  (Robert)
0
Rejoignez-nous