Activation "automatique" d'une macro

Résolu
fikriiii Messages postés 27 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 11 mai 2007 - 17 avril 2007 à 08:17
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 17 avril 2007 à 14:20
Bonjour,

Quelqu'un sait-il comment activer une macro lorqu'il y a clic sur une cellule d'une colonne spécifique, tout en renvoyant ou mémorisant les références de cette cellule (n° ligne).

Voilà voilà et merci

9 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2007 à 13:32
Salut,
En adaptant le code que je te proposias, tu aurais pu y arrivé.

'Dans le code de la feuille à "espionner"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   'Si  la cellule cliquée appartient
   'à la colonne F et V Vide
   If Target.Column = 6 And IsEmpty(Range("V" & Target.Row)) Then
       'Message
       Call MsgBox(" Veuillez d'abord remplir la cellule V" & Target.Row, vbCritical Or vbOKOnly, "Attention")
       'Active la cellule V correspondante
       Call Range("V" & Target.Row).Activate
   End If
End Sub , ----
[code.aspx?ID=41455 By Renfield]
Voila j'espère que ca répond à ton problème

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2007 à 08:25
Salut,
Je ne sais pas si c'est ce que tu souhaites faire, mais essaies le petit bout de code suivant.
Si j'ai tapé à côté, explique un peu mieux ton besoin.

'Dans le code de la feuille à "espionner"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Si  la cellule cliquée appartient
'à la colonne B
If Target.Column = 2 Then MsgBox TraiteCellule(Target)
End Sub<hr />

Public Function TraiteCellule(ByRef C As Range) As Long
'Ce que tu as à faire
'[...]
'retourne la ligne de la cellule
TraiteCellule = C.Row
End Function<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
fikriiii Messages postés 27 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 11 mai 2007
17 avril 2007 à 09:41
Sur une ligne donnée, je veux "bloquer" une cellule tant que la cellule voisine n'a pas été saisie.
Voici mon code:

Sub ContrôleSaisie()


Dim reponse As Integer
Dim message As String
message = "Il faut d'abord saisir le nombre d'heures réalisées?"
Dim devis  As Variant

'Comment paramétrer "inputbox" de telle sorte que lorsque l'on clique sur la touche 'annuler ou la croix, on quitte la procédure?

devis = Val(InputBox("Indiquez le N° du Devis en cours: ", "N° du Devis"))


validation = MsgBox("Il s'agit du devis N° " & devis & ".   Est-ce correct?", _
                    vbYesNo + vbInformation, "Validation")


     If validation = 6 Then
     Range("IV1").Value = devis


   ElseIf validation = 7 Then
    While validation <> 6
devis = InputBox("Indiquez le N° du Devis en cours: ", "N° du Devis")


validation = MsgBox("le N° du devis est:" & devis & ". Est-ce correct?", _
                    vbYesNo + vbInformation, "Validation")
    Wend
  
End If


If Range("F" & devis + 6).Select = True Then


    While Range("V" & devis + 6).Value = ""
    Sheets("Feuil2").Range("F" & devis + 6).ClearContents  
    reponse = MsgBox(message, vbOKOnly + vbCritical, "Attention")
    If reponse = 1 Then
        Exit Sub
    End If


    Wend
End If


End Sub

Ainsi, ce que cherche à faire, c'est de lancer le message "il faut saisir le nombre d'heure réalisées" si l'utilisateur tente de remplir la cellule de colonne F avant.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2007 à 09:58
Salut,
Il faut eviter les accents dans un code (exception des commentaires) c'est mieux.

Regarde ceci.
Sub ControleSaisie()

Dim reponse As VbMsgBoxResult
Dim message As String
Dim devis  As Variant

   message = "Il faut d'abord saisir le nombre d'heures réalisées!"
   'Q: Comment paramétrer "inputbox" de telle sorte que lorsque
   'l'on clique sur la touche 'annuler ou la croix, on quitte la procédure?
   'R:Tu peux tester la valeur retourne ce sera 0
   devis = Val(InputBox("Indiquez le N du Devis en cours: ", "N du Devis"))
   If devis = 0 Then Exit Sub
   reponse = MsgBox("Il s'agit du devis N " & devis & ".   Est-ce correct?", _
                   vbYesNo + vbInformation, "Validation")

   If reponse = vbYes Then
       Range("IV1").Value = devis
       
   Else
       While reponse <> vbYes
           devis = InputBox("Indiquez le N du Devis en cours: ", "N du Devis")
           If devis = 0 Then Exit Sub
           reponse = MsgBox("le N du devis est:" & devis & ". Est-ce correct?", _
                   vbYesNo + vbInformation, "Validation")
       Wend
   End If
   'La ligne suivante est fausse car .Select a pour effect de
   'selectionner la cellule et non de dire si elle est déjà
   'sélectionnée
   If Range("F" & devis + 6).Select = True Then
       'Cette boucle est bizarre car si tu rentre dans cette boucle,
       'Tu ressortiras OBLIGATOIREMENT de ta Sub puisque reponse ne
       'pourra être = QU'A OK (vbokonly!!!)
       While IsEmpty(Range("V" & devis + 6))
           Sheets("Feuil2").Range("F" & devis + 6).ClearContents
           reponse = MsgBox(message, vbOKOnly + vbCritical, "Attention")
           If reponse = vbOK Then Exit Sub
       Wend
   End If

End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]
Au vue de ce que je t'ai mis en commentaire, en ce qui concerne le .Select, je pense que tu vas devoir remanier un peu ton code.

@+: Ju£i?n
Pensez: Réponse acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fikriiii Messages postés 27 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 11 mai 2007
17 avril 2007 à 11:03
En fait, je peine toujours autant: la macro ne s'active pas lorqu'une cellule de la colonne F est activé alors que la cellule voisine (même ligne, colonne V) est vide.
Peux-tu me dire si le code précédent fonctionne chez toi?

Merci
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2007 à 11:09
Salut,
Je suis désolé mais vu que je n'arrive toujours pas à comprendre ce que tu souhaites faire (puisques déjà nous nous ommes éloigner de ta premiere question) je suis un peu perdu....

Test mon code (mon premier poste)
'Dans le code de la feuille à "espionner"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Si  la cellule cliquée appartient
'à la colonne F et V Vide
If Target.Column = 6 And IsEmpty(Range("V" & Target.Row)) Then Call TaMacro
End Sub , ----
[code.aspx?ID=41455 By Renfield]
Mais la encore je ne sais TOUJOURS pas si ca te convient

@+: Ju£i?n
Pensez: Réponse acceptée
0
fikriiii Messages postés 27 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 11 mai 2007
17 avril 2007 à 13:20
Considérons un tableau à z colonnes et 10 lignes.
La cellules F1 est vide. V1, pas.
La cellule F8 et V8 sont  vides.

Si l'utilisateur sélectionne F8 un message doit apparaître indiquant qu'il faut d'abord remplir la cellule de la colonne V

S'il saisit F1, aucun message n'apparaitra puisque V1 est remplie.

Voilà, cet exemple illustre ce à quoi je veux aboutir.
0
fikriiii Messages postés 27 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 11 mai 2007
17 avril 2007 à 14:04
Julien, t'assure! ça marche enfin.
En fait je découvre VBA et déjà Excel je l'utilisais que très rarement pour ne pas dire jamais.

As tu une adresse où on  peut te contacter directement, car chui loin de maitriser ce langage et y a encore pas de chose que j'aimerais savoir faire.

Merci bien!!!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2007 à 14:20
Salut,
Le mieux c'est que tu utilises le Forum après tout il est là pour ça.
En plus cela t'éviteras de "dépendre" d'une seule personne et ainsi d'avoir d'autres points de vue et d'autres exemples.
La seule chose que tu dois impérativement faire, c'est d'expliquer TOUJOURS le plus clairement possible ton problème, tu auras alors une réponse rapide et claire.

Voilà...
Et bon courage.

@+: Ju£i?n
Pensez: Réponse acceptée
0
Rejoignez-nous