Nico67800
Messages postés9Date d'inscriptionjeudi 21 juin 2012StatutMembreDernière intervention13 septembre 2012
-
12 sept. 2012 à 17:18
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
13 sept. 2012 à 10:38
Bonjour à tous,
Dans le cadre de mon travail, j'ai créé un planning comprenant 52 semaines, différents techniciens & différentes plages horaires.
J'utilise déjà une macro pour différencier les types d’intervention.
L’objectif est de pouvoir faire apparaitre une semaine et un technicien sans avoir à scroller manuellement.
Par exemple dans un menu déroulant : choisir la semaine 10 et le technicien 3, avoir un centrage automatique sur ces informations.
J'ai essayé d’utiliser la fonction MakeTopLeft. Le résultat n’est pas concluant car nous n’utilisons probablement pas la fonction à bon escient.
Sub test()
'test
Onglet = ActiveSheet.Name
MakeTopLeft ThisWorkbook.Sheets(Onglet).Cells(4, 19)
End Sub
Les semaines sont présentées en colonne. Par exemple la semaine 1 est placée colonne F, la semaine 2 est placée colonne AB, la semaine 3 est placée colonne AX. L’espacement entre chaque semaine est donc de 22 colonnes.
Les techniciens sont présentés en ligne. Par exemple le technicien 1 est présenté ligne 2, le technicien 2 est présenté ligne 38, le technicien 3 est présenté ligne 74. L’espacement entre chaque technicien est donc de 36 lignes.
L’objectif est donc de choisir dans un menu déroulant le numéro de semaine et de technicien, idéalement la macro fera le reste pour centrer à l’endroit voulu.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 12 sept. 2012 à 18:25
Bonjour,
MakeTopLeft n'étant pas une fonction de VBA, c'est donc forcément une procédure créée par ton appli.
Et tu n'en montres pas le code ! Il nous faut deviner ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 sept. 2012 à 18:43
Salut
Ça se passe dans Range.Show, exemple :
Dim lColonne As Long
Dim lLigne As Long
Dim oRange As Range
' Application équation d'une droite
lColonne = ((NoSemaineChoisie - 1) * 22) + 6 ' 6=F
lLigne = ((NoTechnicienChoisi - 1) * 36) + 2
Set oRange = ActiveSheet.Range("A1").Offset(lLigne - 1, lColonne - 1)
oRange.Show
oRange.Select
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 12 sept. 2012 à 19:09
Bonjour, jack,
je parie personnellement pour l'existence d'une procédure nommée MakeTopLeft qui reçoit en paramètre l'adresse de la cellule et qui utilise les propriétés (de la fenêtre concernée) ScrollRow et ScrollColumn de VBA
Je serais bien allé plus loin, mais ni avec le titre qu'il a donné à sa discussion, ni sur les bases légères de ses explication (voir mon message précédent) qui montrent son incompréhension assez claire d'une appli qu'il n'a pas écrite.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Nico67800
Messages postés9Date d'inscriptionjeudi 21 juin 2012StatutMembreDernière intervention13 septembre 2012 13 sept. 2012 à 10:12
Merci Jack pour ta réponse.
Pour répondre à Ucfoutu, je ne savais pas que MakeTopLeft n'est pas une fonction de VBA. En Sachant ce dont j'avais besoin j'ai fais des recherches sur Internet et c'est comme ça que j'ai écris le code que j'ai posté ci-dessus (je reconnais qu'il est léger) mais c'est bien moi qui ait "essayé" de le construire.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 13 sept. 2012 à 10:25
Ah ?
Mais quand on écrit :
je ne savais pas que MakeTopLeft n'est pas une fonction de VBA
et :
Le résultat n’est pas concluant
De deux choses l'une :
- ou ton code ne contient pas une procédure nommée MakeTopLeft ===>> et ce n'est alors pas un résultat "non concluant", que tu devtrais dénoncer, mais une erreur du compilateur (dont tu ne parles pas) !
- ou ton code contient cette procédure et tu ne l'as toujours pas montrée (alors que tu dis que tu as écrit le code de ton appli et que tu donnes même l'impression de ne pas savoir qu'il contient cette procédure) !!
Il y a là comme un "malaise", non ?
Allez ===>> ouvre ton aide VBA (comme je l'ai dit plus haut) sur les propriétés ScrollRow et ScrollColumn !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 13 sept. 2012 à 10:38
Petit exemple bâclé :
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollColumn = 10
MsgBox "regarde"
With ActiveWindow
.ScrollRow = Range("B3").Row
.ScrollColumn = Range("B3").Column
End With
MsgBox "regarde"
Je te laisse faire ta procédure "MakeTopLeft", maintenant. Elle est trop simple pour que je te fasse l'affront de l'écrire.
Le paramètre à lui passer ? Un objet Range !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ