J'ai un souci sur un code qui devrait s'exécuter au changement de valeur de ma cellule mais qui s'exécute aussi juste quand je clique sur la cellule.
Code:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
If Not Intersect(R, Range("j7:j20000")) Is Nothing And R.Count = 1 Then 'présent(s) au RdV
PratiqueSuivisAppels01.Show
End If
If Not Intersect(R, Range("p7:p20000")) Is Nothing And R.Count = 1 Then 'présent(s) au RdV
PratiqueSuivisAppels02.Show
If [R] = "RdV Fait" Then
Range(R.Offset(0, -9), R.Offset(0, 1)).Select
Call CopieTelRdV
End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
c'est cette partie :
Code:
If [R] = "RdV Fait" Then
Range(R.Offset(0, -9), R.Offset(0, 1)).Select
Call CopieTelRdV
End If
je pense que dans ce code global, ce n'est pas sa place.
j'ai tenté de l'intégrer au code suivant en remplaçant Target pas R :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
If Not Intersect(Target, Range("I3")) Is Nothing Then
Target.Offset(0, 0).Select
Call Telephone
End If
If Not Intersect(Target, Range("i7:i20000")) Is Nothing Then
ActiveSheet.Unprotect Password:=""
Target.Offset(0, 2) = Now()
End If
If Not Intersect(Target, Range("l7:l20000")) Is Nothing Then
ActiveSheet.Unprotect Password:=""
Target.Offset(0, -7) = Now()
Target.Offset(0, 4) = ""
Target.Offset(0, 8) = ""
Target.Offset(0, 9) = ""
End If
end sub
Mais à cet emplacement, il ne s'exécute pas.
Auriez-vous la solution car tous mes essais n'ont pas abouti.
Avec mes remerciements,
Amicalement,
Lionel,
Voici le code modifié tel que fait par paf.
Et ça marche bien :
Code:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
If Not Intersect(R, Range("j7:j20000")) Is Nothing And R.Count = 1 Then
PratiqueSuivisAppels01.Show
End If
If Not Intersect(R, Range("p7:p20000")) Is Nothing And R.Count = 1 Then
' 1 ) on traite "RdV Fait"
If R = "RdV Fait" Then
Range(R.Offset(0, -9), R.Offset(0, 1)).Select
Call CopieTelRdV
End If
' 2 ) on affiche l'USF
PratiqueSuivisAppels02.Show
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Le souci est que cette partie :
Code:
' 1 ) on traite "RdV Fait"
If R = "RdV Fait" Then
Range(R.Offset(0, -9), R.Offset(0, 1)).Select
Call CopieTelRdV
End If
Qui doit s'exécuter au changement de valeur de la cellule et pas au clic.
Allé, j'arrête de vous faire travailler ... l'heure du réveillon arrive.
Un grand merci pour votre gentillesse.
Amicalement,
Lionel,
Private Sub Worksheet_SelectionChange(ByVal R As Range)
If Not Intersect(R, Columns("H:H")) Is Nothing Then
'Quand la colonne H est sélectionnée, MsgBox
If R.Offset(0, -1) = "bonjour" Then MsgBox "Bonjour !"
End If
End Sub
Ce qui veux dire, tu inscrit le texte en colonne G et passant (avec le tabulateur du clavier) sur la colonne H, la macro va s'exécuter. Un exemple en PJ.
Je n'y comprends rien Grrrrr !!!
Je suis dans un Selection_Change() et j'ai enlevé EnableEvents et ça ne marche pas
J'ai mis l'userforme dans le fichier test pour que ce soit complet (j'aurais du commencer par là).
Pour avoir mis 2 fois If Not Intersect??? Plus besoin des macros.
VB:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal R As Range)
Dim lig As Long
Application.ScreenUpdating = False
If Not Intersect(R, Range("Q7:Q65536")) Is Nothing Then
If R.Offset(0, -1) = "RdV Fait" Then
With Sheets("RendezVous")
.Unprotect Password:=""
lig = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lig, 1) = lig - 3
.Cells(lig, 7) = "X"
.Cells(3, 1).RowHeight = 1
.Cells(3, 6) = 1
.Cells(2, 1) = lig - 3
.Cells(lig, 8).Value = R.Offset(0, -10).Value
.Cells(lig, 9).Value = R.Offset(0, -9).Value
End With
End If
Else
Exit Sub
End If
End Sub
D'après ce que j'ai compris. Ensuite
VB:
Sub Telephone()
Application.EnableEvents = False 'A supprimer
MsgBox "entrée"
If [h1] = "$I$3" Then Exit Sub ' "$I$3" est l'adresse de la cellule, si c'est la valeur, à modifier.
ActiveSheet.Unprotect Password:="" ' À quelle feuille exacte tu fait référence???
If [h1] <> 9 And IsNumeric([h1]) Then 'Met plutôt Range("h1"), idem pour les autres.
ActiveSheet.Unprotect Password:=""
[h1] = [E1] & [I3]
MsgBox "sortie"
End If
Application.EnableEvents = True
End Sub
je suis un peu perdu car tu vas bcp trop vite pour moi LOL
Merci pour tes réponses et modifications.
le classeur test au post 18 n'est qu'un classeur pour traiter mon souci.
Les codes qui sont dedans sont issus de mon classeur de travail est certaines lignes peuvent paraître (sorties de leur contexte) inutiles ou erronées.
mais dans le fichier de travail, elles ont leur utilité.
Ta gentillesse, ta précision et ton vouloir que les codes soient biens écrits font que tu corriges tout LOL.
Bien sur, je t'en remercie vivement et j'en tiendrai compte.
Pour que ne je sois pas perdu, est-il possible de ne traiter que mon souci présent ?
Car pour les autres codes (certainement mal écrits, j'en conviens LOL),, ils fonctionnement quand même et le jour viendra où je me mettrai à les écrire de façon "plus pro et plus efficace" grâce aux connaissances acquises ...... grâce à vos enseignements réponse après réponse.
je reviens sur ta question :
Re Lionel,
Pour avoir mis 2 fois If Not Intersect??? Plus besoin des macros.
En fait, comme dit plus haut, le code n'est qu'un extrait du code de mon classeur de travail qui traite également d'autres colonnes.
Tout ceci étant dit, la seule chose qui ne fonctionne pas dans mon fichier test est que le code "Private Sub Worksheet_SelectionChange(ByVal R As Range)" s'exécute au clic dans la cellule
alors que j'ai besoin que le code :
Code:
If R = "RdV Fait" Then
Range(R.Offset(0, -9), R.Offset(0, 1)).Select
Call CopieTelRdV
End If
Ne s'exécute que quand la valeur de la cellule change.
Encore un grand merci pour avoir là.
Heureux Noel à toutes et à tous,
Amicalement,
Lionel,
Exact .....
LOL, Je n'avais pas vu, perdu dans tes explications pourtant justifiées (je ne suis pas une femme et mon neurone ne sait traiter une chose à la fois ).
ca marche et je t'en remercie.
Maintenant "libéré" de ce souci, je vais pouvoir étudier tes codes, l'esprit libre
Bon Noel Lone ainsi qu'à toutes et à tous,
Amicalement,
Lionel,