[VBA] Demande d'aide pour une macro

Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 septembre 2012 - 12 sept. 2012 à 17:18
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 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.

Merci par avance.

Nicolas

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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
0
Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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
0
Rejoignez-nous