Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

a l'ouverture classeur,positionnement sur un choix de liste deroul

11 réponses
Avatar
ALF
Bonjour,

J'aimerais qu' à l'ouverture du classeur,on sélectionne l'ascenseur de la
liste déroulante qui se trouve sur la cellule B5 et sur l'onglet NATIONAL, et
que l'on se positionne sur le choix "Global_DRCTX" ,la macro devant alors
s"executer sur ce choix la...

je vous laisse le code a l'ouverture du classeur ,qui me semble incomplet
pour arriver a cela....
actuellement,A l'ouverture du classeur,le positionnement est en fait le
dernier choix effectué avant la précédente fermeture du classeur..ce que je
ne veux pas..

j'aimerais que si par ex l'on a choisi le choix "Impayés_du_Fixe" avant la
fermeture,on ai a l'ouverture le choix "Global_DRCTX"

Voici le code
Private Sub Workbook_Open()


Application.ScreenUpdating = False
Application.DisplayAlerts = False

For Each Sh In Sheets
Sh.Visible = True
Next Sh

Sheets(1).Visible = xlVeryHidden

Sheets("Impayés_E_du_Fixe").Visible = False
Sheets("Procédures_Collectives_E").Visible = False
Sheets("Commentaires").Visible = False
Sheets("Config").Visible = False
Sheets("Graphes").Visible = False
Sheets("Fiches_Label_Indicateurs").Visible = False

With Application
.EnableEvents = False
.Goto Reference:="National!R5C2"
.EnableEvents = True
.DisplayAlerts = True
End With

End Sub


Merci de votre soutien


--
ALF

1 réponse

1 2
Avatar
FFO
Bonsoir ALF

Aprés avoir analysé ton fichier joint et plus particulièrement ta macro

le code bloque sur la partie :

If Target.Address = "$B$5" Or Target.Address = "$B$12" Then
nomchamp = [B5] & "_" & [B12]
On Error Resume Next
Sheets("Commentaires").Visible = True
Sheets("Commentaires").Range(nomchamp).Copy [B48]
Sheets("" & s & "").Select
End If

et plus précisement sur la ligne :

If Target.Address = "$B$5" Or Target.Address = "$B$12" Then

qui met la condition que la cellule modifiée doit être B5 ou B12 pour
éxécuter la suite
Dans une macro évennementielle de ce type toutes les cellules peuvent
contribuer à ce processus d'où la nécessité de cette condition pour les cibler
La cellule concernée avec cette macro est de toute façon B5
Donc cette condition n'a pas lieu d'être

Je te propose à la place de :

If Target.Address = "$B$5" Or Target.Address = "$B$12" Then
nomchamp = [B5] & "_" & [B12]
On Error Resume Next
Sheets("Commentaires").Visible = True
Sheets("Commentaires").Range(nomchamp).Copy [B48]
Sheets("" & s & "").Select
End If

de mettre :

nomchamp = [B5] & "_" & [B12]
On Error Resume Next
Sheets("Commentaires").Visible = True
Sheets("Commentaires").Range(nomchamp).Copy [B48]
Sheets("" & s & "").Select

Ce qui revient à supprimer les 2 lignes :

If Target.Address = "$B$5" Or Target.Address = "$B$12" Then
End If

J'ai essayé avec cette dernière correction ta macro c'est bien déroulée
jusqu'à son terme

Reste maintenant à savoir si le résultat demeure correct

Croisons les doigts !!!

Je ne pourrais t'aider plus pour l'instant car sur le départ (vacances bien
méritées)

Je serais de retour dans 8 jours et prendrais connaissance du résultat

Surtout n'oublies pas de me le communiquer

Si il n'est pas probant vois avec les autres correspondants du forum ils
pourront surement t'aider

Pour ma part je reprendrais éventuellement ce fil à mon retour

Bon courage !!!!



re,
je suis désolé mais ca ne marche toujours pas...
la macro evenementielle fonctionne mais pas la macro"declench_macro_ouverture"
j'ai essayé la macro "declench_macro_ouverture" seule et toujours le meme
message..
si j'enleve les lignes que tu me dis,j'ai le meme message d erreur mais
concerne la ligne:

If Target.Address = "$B$5" Or Target.Address = "$B$12" Then
nomchamp = [B5] & "_" & [B12]





je te laisse le fichier en question que j'ai du restreindre pour la cause...

http://cjoint.com/?iksfC4dKCS

merci encore
--
ALF



Rebonjour à toi

Si la macro qui se déclenche lorque la cellule B5 est modifiée fonctionne en
utilisation normale il n'y a aucune raison qu"elle ne fonctionne pas dans
une macro classique
C'est bonnet blanc et blanc bonnet
D'un côté le code est exécuté par le changement de valeur de la cellule "B5"
de l'autre par l'activation d'une macro

Vérifies donc que par la modification de "B5" tout fonctionne puis lance la
macro sans utiliser le code évennementiel Private Sub Workbook_Open puis
enregistres fermes et réouvres ton document

Si le test normal par le chagement de "B5" est correct il devrait en être de
même pour les 2 autres

Tu peux malgrés tout tenter de supprimer dans ta macro
"declench_macro_ouverture" les première lignes suivantes :

Set Existance = Worksheets("Config").Columns(1).Find(Sh.Name,
LookIn:=xlValues, LookAt:=xlWhole)
If Existance Is Nothing Then Exit Sub
If Target.Address <> "$B$12" And Target.Address <> "$B$5" Then Exit Sub

Qui à mon sens ne sont utiles que pour le fonctionnement de la macro
évennementielle

Et de réessayer à nouveau en vérifiant le résultat obtenu

Dis moi !!!!


re,

j'ai fait comme tu m'as indiqué et j'ai le message suivant: erreur
d'execution 424: Objet requis

lorsque je fais debogage, j'ai cette ligne de code qui m'est souligné:
Set Existance = Worksheets("Config").Columns(1).Find(Sh.Name,
LookIn:=xlValues, LookAt:=xlWhole)

Config est une feuille qui est cachée et normalement on n'a pas besoin de
l'ouvrir...
que se passe t il???

Merci

je te laisse la macro d'ouverture modifiée...

Private Sub Workbook_Open()


Application.ScreenUpdating = False
Application.DisplayAlerts = False

For Each Sh In Sheets
Sh.Visible = True
Next Sh

Sheets(1).Visible = xlVeryHidden

Sheets("Impayés_E_du_Fixe").Visible = False
Sheets("Procédures_Collectives_E").Visible = False
Sheets("Commentaires").Visible = False
Sheets("Config").Visible = False
Sheets("Graphes").Visible = False
Sheets("Fiches_Label_Indicateurs").Visible = False

With Application
.EnableEvents = False
.Goto Reference:="National!R5C2"
.Sheets("NATIONAL").Range("B5") = "Global_DRCTX"
.Run ("declench_macro_ouverture")
.EnableEvents = True
.DisplayAlerts = True
End With

End Sub

Merci encore pour ton aide
--
ALF



Rebonjour à toi

Attention la Macro évennementiel intitulé "Private Sub
Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)" ne se
déclenche que quant la cellule décrite dans son code (ici "B5" ou B12) change
de valeur
Or la ligne que je t'ai proposé n'a pour but que de mettre une valeur
initial et non de provoquer un changement de valeur de cette cellule
La macro évennementiel ne s'active donc pas

Du manière générale ces types de macro ne réagissent qu'aprés un évennement
comme leur nom l'indique déclenché par une action de l'utilisateur

Il sera donc difficile par une instruction d'une macro d'obtenir cet
aboutissement

Je te propose de creer une nouvelle macro qui aura ce même code que tu
déclenchera dans ta macro "Private Sub Workbook_Open() " par la ligne à
intégrer :

Run ("macro") '(a actualiser du nom de cette macro)

Celà devrait convenir

Dis moi


re,

une fois que le classeur est ouvert,il y a une macro qui se déclenche
lorsque le choix sur B5 est fait..
j'aimerais donc,que à l'ouverture puisque l'on a choisi sur B5
"Global_DRCTX" cette macro s'active..
je te laisse cette macro.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim c As Range
Dim s As Object


Set Existance = Worksheets("Config").Columns(1).Find(Sh.Name,
LookIn:=xlValues, LookAt:=xlWhole)
If Existance Is Nothing Then Exit Sub
If Target.Address <> "$B$12" And Target.Address <> "$B$5" Then Exit Sub

Application.ScreenUpdating = False
Application.EnableEvents = False

mois = [B12]
indic = [B5]

For Each s In Sheets("Config").Range("A1:A" &
Sheets("Config").Range("A65536").End(3).Row)
Sheets("" & s & "").Select
Application.EnableEvents = False
[B12] = mois
[B5] = indic
Application.EnableEvents = True

Set plage = Union(Range("I54:I61"), Range("I63:I73"))
For Each c In plage
If Left(c, 4) = "Taux" Or Left(c, 4) = "Effi" Or Left(c, 4) = "Qual" Or
Left(c, 1) = "%" Or Left(c, 3) = "EFR" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.00%"
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "#,##0"
End If
If Left(c, 33) = "Efficience processus Grand Public" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).Font.Bold = True
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).Font.Bold = False
End If
Next c

For Each c In Range("N24:N50")
If Left(c, 4) = "Taux" Or Left(c, 4) = "Effi" Or Left(c, 4) = "Qual" Or
Left(c, 1) = "%" Or Left(c, 3) = "EFR" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.00%"
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "#,##0"
End If
If Left(c, 23) = "Taux de recouvrement GP" Or Left(c, 13) = "Taux de siren"
Then
Range(c.Offset(0, 1), c.Offset(0, 5)).Font.Bold = True
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).Font.Bold = False
End If
Next c

For Each c In Range("N24:N50")
If Left(c, 4) = "Nive" Or Left(c, 28) = "Dossier moyen RJ LJ directes" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.0"
End If
Next c

For Each c In Range("B26:B44")
If Left(c, 4) = "Nomb" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "#,##0"
End If
Next c

For Each c In Range("H5:H18")
If Left(c, 4) = "EFFC" Or Left(c, 11) = "Départs EXT" Then
Range(c.Offset(0, 1), c.Offset(0, 6)).NumberFormat = "0"
Else
Range(c.Offset(0, 1), c.Offset(0, 6)).NumberFormat = "0.0"
End If
If Left(c, 12) = "EFFCDI Total" Then
Range(c.Offset(0, 1), c.Offset(0, 6)).Font.Bold = True
Else
Range(c.Offset(0, 1), c.Offset(0, 6)).Font.Bold = False
End If
If Left(c, 11) = "Départs EXT" Or Left(c, 12) = "EFFCDI Total" Then
Range(c.Offset(0, 3), c.Offset(0, 3)).Font.Bold = True
Else
Range(c.Offset(0, 3), c.Offset(0, 3)).Font.Bold = False
End If
Next c


If Target.Address = "$B$5" Or Target.Address = "$B$12" Then
nomchamp = [B5] & "_" & [B12]
On Error Resume Next
Sheets("Commentaires").Visible = True
Sheets("Commentaires").Range(nomchamp).Copy [B48]
Sheets("" & s & "").Select
End If


Range("B5").Select
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 1

Next s
Sh.Select


Sheets("Commentaires").Visible = False


Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub


Merci encore

--
ALF



Rebonjour à toi

Qu'entends tu par "la macro ne s'est pas activé sur ce choix..."

Peux tu me donner des détailles

Merci



Bonjour,

Apparemment ,cela se positionne bien sur l'onglet NATIONAL choix
Global_DRCTX mais par contre et cela est génant,la macro ne s'est pas activé
sur ce choix...
il ne doit pas manquer grand chose...

il faut noter que la liste deroulante est issu de données/validation...

Merci encore pour ton soutien
--
ALF



Salut à toi

Peut être rajouter dans ce code la ligne :
Sheets("NATIONAL").Range("B5") = "Global_DRCTX"

A essayer !!!

Dis moi !!!
















1 2