Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

macro que si feuille active

GHISLAIN

XLDnaute Impliqué
bonjour a tous

dans une feuille( on dira feuil1) j'utilise le

Private Sub Worksheet_SelectionChange(ByVal target As Range)
'MsgBox "toto. "


de la feuil2 j ecris dans la feuille 1 des données et le mess s affiche , ce que je ne souhaite pas

est il possible que les macro de la feuil1 s active uniquement si celle ci est active ou affichée a l ecran ??



j ai tenté

if ActiveSheet.Name then exit sub

'MsgBox "toto. "
end if

sans resultat

merci de votre aide


amicalement

ghislain
 

GHISLAIN

XLDnaute Impliqué
Re : macro que si feuille active

bonjour Hippolite j espere que tu vas bien ,

merci de me donner encore un coup de main !!

dans ton code proposé ça oblige a nomer la feuille , ce qu il me faudrai c est que les macro presente dans ce
Worksheet_SelectionChange(ByVal Target As Range) ne s'active que si la feuille est activée

es t il possible d avoir la meme chose sans devoir nomé la feuille ??
il me faudrai cette solution puisque des feuilles sont creee automatiquement.


merci de ton aide

amicalement

ghislain
 

tototiti2008

XLDnaute Barbatruc
Re : macro que si feuille active

Bonjour ghislain, Bonjour Hippolite,

A mon avis il faudrait plutôt revoir la procédure qui écrit en feuil1 depuis la feuil2
Il est rare que l'on ait besoin de sélectionner les cellules de la feuil1 pour y inscrire des infos... mais je pourrais être plus catégorique si tu nous fournis le code correspondant
 

GHISLAIN

XLDnaute Impliqué
Re : macro que si feuille active

bonjour tototiti2008,
j espere que tu vas bien toi aussi et merci egalement de l aide que tu apportes a toute nos demandes !


voici le code que j utilise pour ventiler des donnees d'une feuille a l autre (code elaboré avec l aide de kjin que je remercie au passage )

code mit dans chaque feuille utilisée dans Private Sub Worksheet_SelectionChange(ByVal target As Range) qui declenche l user si on clique sur une cellule de la colonne 5


Dim x&

If target.Column = 5 Then
If IsEmpty(target) Then
cancel = True
x = target.Row
If ActiveCell.Offset(0, -1) = "" Then
MsgBox "LA CELLULE PRECEDENTE N'EST PAS RENSEIGNEE, VOUS NE POUVEZ ACTIVER LE CHOIX. "
Range("A1").Select
Exit Sub
End If
Set Rng = Range("A" & x, "J" & x)
Lieux1.Show
End If
End If


apres ouverture de l userform et selection du choix , les données sont rangées dans la feuille selectionnée dans la listebox1

With Sheets(CStr(ListBox1))
If TextBox1.Value <> "" Then
returnValue = MsgBox(" CONFIRMER VOTRE CHOIX : " & TextBox1.Value, vbYesNo, "MESSAGE")
' Exit Sub
If returnValue = vbNo Then Exit Sub
End If
ActiveCell.Offset(0, 1) = "=TODAY()"
ActiveCell.Offset(0, 0) = ListBox1.Value
Range("A1").Select
Rng.Copy .Range("a65000").End(xlUp).Offset(1, 0)
Rng.Delete shift:=xlUp
End With
Set Rng = Nothing
Unload Me

jusque la tous va bien ca fonctionne ,

je ne nomme pas les feuilles etant donnée que des feuilles peuvent etre nouvellement creeent par user

le souci que j ai c est que j ai la meme fonction sur la colonne 7 et 9
et lors de la copie des données j ai les messages de la feuille de destination qui s affichent sans pour autant que la feuille soit activée a l ecran

d ou m a question , serait il possible que les macros figurant dans le Private Sub Worksheet_SelectionChange(ByVal target As Range) ne s'active que si la feuille est selectionnee ou affiché a l ecran

merci de votre aide

amicalement

ghislain
 

GHISLAIN

XLDnaute Impliqué
Re : macro que si feuille active

j ai epuré mon classeur

merci encore de votre aide
 

Pièces jointes

  • Classeur1.zip
    34.5 KB · Affichages: 65
  • Classeur1.zip
    34.5 KB · Affichages: 71
  • Classeur1.zip
    34.5 KB · Affichages: 66

tototiti2008

XLDnaute Barbatruc
Re : macro que si feuille active

Re,

désolé mais c'est un peu le bordel pour moi ton classeur... j'ai du mal à comprendre d'où vient le soucis, peut-être si kjin repasse par là.

Edit : Oui, j'ai compris le soucis mais je n'ai pas trouvé de solution dans l'etat actuel de fonctionnement du classeur, peut-être que kjin qui connait mieux le code aura plus d'idées
 
Dernière édition:

GHISLAIN

XLDnaute Impliqué
Re : macro que si feuille active

re ,

le faite est que lors du transfert des données sur la feuille de destination, les messages de la feuille de destination s affichent ,
merci quand meme de ton aide

amicalement

ghislain
 

Hippolite

XLDnaute Accro
Re : macro que si feuille active

Re,
Je n'ai pas le temps d'étudier ton code qui comporte plusieurs macros événementielles.
N'y aurait-il pas moyen d'insérer quelques Application.EnableEvents = False/True ?
A+

Autre solution : mettre un drapeau qui change quand la feuille est activée/désactivée via les macros événementielles
 
Dernière édition:

GHISLAIN

XLDnaute Impliqué
Re : macro que si feuille active

re hippolite ,

tu me pose une colle la lol, je ne sais a quoi correspond "un drapeau "

concernant Application.EnableEvents = False/True a quelle endroit dois je le mettre ??

merci encore

amicalement

ghislain
 

Hippolite

XLDnaute Accro
Re : macro que si feuille active

Re,
concernant Application.EnableEvents = False/True a quelle endroit dois je le mettre ??
Tu mets Application.EnableEvents = False avant une action qui déclencherait des macros événementielles non souhaitées, tu mets Application.EnableEvents = True après pour rétablir le fonctionnement normal des macros événementielles. Mais cette méthode impose que les actions en question ne nécessitent pas de déclencher d'autres macros événementielles, c'est du tout ou rien.

a quoi correspond "un drapeau "
C'est une valeur qui mémorise un état dans une cellule, un nom ou un paramètre (attention à sa déclaration pour ne pas avoir de remise à zéro), tu la fais monter à Vrai avec la macro événementielle Private Sub Worksheet_Activate() et tu la fais redescendre à Faux avec la macro événementielle Private Sub Worksheet_Deactivate()

A+
 

Discussions similaires

Réponses
2
Affichages
593
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…