2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feuille

Usine à gaz

XLDnaute Barbatruc
Bonjour à tous,

j'ai besoin de mettre ces deux macros dans le module de ma feuille mais elles sont en conflits car elles ont le même nom.

j'ai essayé de modifier "un peu partout" sans succès.

Un grand merci pour votre aide si vous voulez bien.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(Target, Range("E2")) Is Nothing And Target.Count = 1 Then
UserForm1.Show
End If
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("H3")) Is Nothing Then
Call FormulesExped
End If
End Sub

Amicalement,
Lionel,
 

JCGL

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Bonjour à tous,

As-tu déverrouillé la cellule H3 ?

A+ à tous
 

Pièces jointes

  • Matrice suivi Rebuts2SIOF1.zip
    813.3 KB · Affichages: 75
  • Matrice suivi Rebuts2SIOF1.zip
    813.3 KB · Affichages: 73
  • Matrice suivi Rebuts2SIOF1.zip
    813.3 KB · Affichages: 69

ROGER2327

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Bonjour à tous.


J'ai ouvert le classeur.
La protection empêche la sélection de H3.
Je vire la protection.
Je sélectionne H3.
La procédure s'exécute.

...





ROGER2327
#6632


Jeudi 19 Palotin 140 (Occultation de Saint Gauguin, océanique - fête Suprême Quarte)
19 Floréal An CCXXI, 6,0991h - arroche
2013-W19-3T14:38:16Z
 

Dranreb

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Non car c'est une cellule qui contient une formule,
Je suppose que ça répondait à ma question
Vous êtes sur que c'est en sélectionnant une plage contenant la cellule H3 que vous voulez que votre FormulesExped s'exécute ?
Mais dans ce cas pourquoi la conditionnez vous à Not Intersect(Target, Range("H3")) Is Nothing ?
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$E$2" Then
   UserForm1.Show
   FormulesExped
   End If
End Sub
Et puis c'est tout !
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Re-Bonjour Dranreb zet à tous,

je suis très novice en VBA, vous vous en êtes certainement aperçus.

Je vais tenter de vous répondre en fonction de ce que j'ai compris.

Je ne sélectionne pas de plage mais uniquement deux cellules (1 par condition (E2 et H3))

je n'ai pas besoin que la seconde condition (H3) s'exécute à chaque fois que la première agit (celle-ci s'exécute à chaque saisie, c'est à dire en permanence)

C'est pourquoi, la condition 1 doit s'exécuter quand je saisie dans E2
et la condition 2 si H3 varie.

Amicalement,
Lionel,
 

Dranreb

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

à chaque fois que la première agit (celle-ci s'exécute à chaque saisie,
Faux. Elle s'exécute quand vous sélectionnez la cellule. Si vous vouliez qu'elle s'exécute quand son contenu change il faut que ce soit dans une Workseet_Change.
et la condition 2 si H3 varie.
Donc si sa valeur change mais pas son contenu ?
Si elle varie quand ?
Pendant l'affichage de Userform1 ?
Alors:
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim AncVal As Variant
Application.ScreenUpdating = False
If Target.Address = "$E$2" Then
   AncVal = Me.[H3].Value
   UserForm1.Show
   If Me.[H3].Value <> AncVal Then FormulesExped
   End If
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Faux. Elle s'exécute quand vous sélectionnez la cellule. Si vous vouliez qu'elle s'exécute quand son contenu change il faut que ce soit dans une Workseet_Change. Donc si sa valeur change mais pas son contenu ?[/code]

VOUS AVEZ RAISON, je me suis mal expliqué car elle s'exécute bien quand je sélectionne la cellule.

Si elle varie quand ?
Pendant l'affichage de Userform1 ?
Alors:
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim AncVal As Variant
Application.ScreenUpdating = False
If Target.Address = "$E$2" Then
   AncVal = Me.[H3].Value
   UserForm1.Show
   If Me.[H3].Value <> AncVal Then FormulesExped
   End If
End Sub

Non, l'exécution de la seconde condition n'est pas liée à l'affichage de l'user forme.

Dans cette cellule (H3) il y a la formule suivante :=NO.SEMAINE(AUJOURDHUI())-B1
Donc elle varie :
- 1 - quand le numéro de semaine change,
- 2 - quand je saisi dans "B1",

J'espère avoir tout compris et avoir bien répondu,
Amicalement,
Lionel,
 

Usine à gaz

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Bonjour JCGL,
Bonjour à tous,

Malheureusement, chez moi, ça ne marche toujours pas et ma formule en H3 a disparue mais j'en ai besoin.

Je continue à chercher car je suis certain que nous ne sommes pas loin de la solution,

Amicalement,
Lionel,
 

JCGL

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Bonjour à tous,

Peux-tu essyer en supprimant la _SelectionChange et en remplçant la _Change par :

VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
ActiveSheet.Unprotect
If Target.Address = "$B$1" Then Call FormulesExped
If Target.Address = "$E$2" Then UserForm1.Show
Dim X&
    With Range("B5:B44")
        .RowHeight = 42.5
        .EntireRow.Hidden = True
    End With
For X = 5 To 44
If Cells(X, 2) = "n° OF" And Cells(X, 5) > 0 Then Cells(X, 2).EntireRow.Hidden = True
Next X
For X = 5 To 44
If Cells(X, 2) > 0 And Cells(X, 5) > 0 Then Cells(X, 2).EntireRow.Hidden = False
Next X
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("B2").Select
End Sub

A+ à tous
 

Pièces jointes

  • Matrice suivi Rebuts2SIOF1.zip
    813.3 KB · Affichages: 60
  • Matrice suivi Rebuts2SIOF1.zip
    813.3 KB · Affichages: 70
  • Matrice suivi Rebuts2SIOF1.zip
    813.3 KB · Affichages: 58
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Message pour JCGL,

Bon sang ... ça marche mais il reste un petit soucis d'ouverture de ma liste déroulante en E2 qui s'ouvre après que j'ai déjà sélectionné la référence du produit.

En tous cas, nous sommes ou plutôt tu es très près du bon code.

Un grand merci,
Amicalement,
Lionel,
 

Usine à gaz

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Message pour JCGL,
Bonjour à tous,

Merci de t'occuper ainsi des soucis des autres,
Ok, je ferai cela ce soir et je te tiens informé.

Merci à tous de votre gentillesse,
Amicalement,
Lionel,
 

Usine à gaz

XLDnaute Barbatruc
Re : 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) pour la même feui

Bonjour JCGL,
Bonjour à tous,

Enfin, j'ai (je crois) compris comment pouvoir m'expliquer plus clairement grâce aux interventions de chacun et à tes codes.

Voici les codes qui fonctionnent presque automatiquement :

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Dim X&
With Range("B5:B44")
.RowHeight = 42.5
.EntireRow.Hidden = True
End With
For X = 5 To 44
If Cells(X, 2) = "n° OF" And Cells(X, 5) > 0 Then Cells(X, 2).EntireRow.Hidden = True
Next X
For X = 5 To 44
If Cells(X, 2) > 0 And Cells(X, 5) > 0 Then Cells(X, 2).EntireRow.Hidden = False
Next X
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("B2").Select
End Sub
_______________________________________________________________________
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$E$2" Then UserForm1.Show
If Target.Address = "$B$1" Then Call FormulesExped

End Sub

et voici ce qui se passe :

1 - la première macro s'exécute normalement donc RAS,
2 - la seconde se déclenche mais pas de façon automatique. En effet :

B1 me permet de changer le numéro de semaine de H3 afin que la macro "Exped" recherche les livraisons dans le champ de la bonne semaine.

H3 contient donc la formule suivante : =NO.SEMAINE(AUJOURDHUI())-B1
ce qui fait que H3 est modifié en fonction de la semaine (NO.SEMAINE(AUJOURDHUI())) et de B1 quand j'ai besoin.

ce code fonctionne quand uniquement quand je clique sur B1 de la façon suivante :

je clique sur B1 et j'entre un nombre, je valide "rien ne se passe"
je re-clique sur B1 et la macro se déclenche.
Ce que je tente d'exprimer c'est que si je clique une fois, que je saisi un nombre, que je valide et que je ne re-clique pas = rien ne se passe.

Ce que j'aurais souhaité :

Est-il possible que la macro se déclenche "au changement de valeur" de H3 sans que j'ai besoin de cliquer sur B1 car, dans le cas contraire, la macro ne se déclenchera jamais au changement de semaine en fonction de la formule ?

C'est le matin ici et je ne suis pas certain d'avoir été clair.

Je vous adresse mes remerciement et vous souhaite une très bonne journée,
Amicalement,
Lionel,
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
236

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i