fikriiii
Messages postés27Date d'inscriptionmardi 10 avril 2007StatutMembreDernière intervention11 mai 2007
-
17 avril 2007 à 08:17
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDerniè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).
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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]
fikriiii
Messages postés27Date d'inscriptionmardi 10 avril 2007StatutMembreDernière intervention11 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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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.
fikriiii
Messages postés27Date d'inscriptionmardi 10 avril 2007StatutMembreDernière intervention11 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?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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.