Macro pour déplacement colonne avec barre de fractionnement

chrisnapoli Messages postés 134 Date d'inscription   Statut Membre Dernière intervention   -  
chrisnapoli Messages postés 134 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je voudrais améliorer mes macros que j'ai faite par l'enregistreur VBA Excel
j'ai ma feuille Excel avec en vertical la barre de fractionnement qui s'arrête à la colonne CZ (comprise),en Horizontal ma barre de fractionnement s'arrête a la ligne 11(comprise)
je voudrais qu'avec deux boutons de Macros (voir peut être un si c'est réalisable )
garder ma position a gauche en CZ vertical et ligne 11 horizontal , mais que du cote droit je me retrouve en un clic sur mon bouton en position vertical en DN juste après CZ et toujours en ligne11,un deuxième clic sur mon bouton et me retrouver en vertical en position DA juste après CZ
si ce n'est pas réalisable avec un seul bouton pas de problème avec deux ,je m'en contenterai
je rencontre des problèmes lorsque je met mes macros en route dans le cas ou j'oublie de cliquer sur la partie droite avant d'appuyer sur le bouton' ca part dans l(autre sens mais peut être est ce normal)
je mets ci dessous les deux macros que j'ai faite avec l'enregistreur

Sub Graphe()
'
' Graphe Macro
'

'
Range("DO41").Select
ActiveWindow.LargeScroll ToRight:=-1
ActiveWindow.SmallScroll ToRight:=-2
Range("DG32").Select
End Sub

Sub Préouverture()
'
' Préouverture Macro
'

'
Range("DI43").Select
ActiveWindow.LargeScroll ToRight:=1
ActiveWindow.SmallScroll ToRight:=2
Range("DQ53").Select
End Sub

Merci pour votre aide
Cordialement CN

1 réponse

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Avec ce que j'ai compris de ton souhait, cette macro avec un seul bouton :
    Public Sub positionnement()
    If ActiveCell.Address = "$CZ$11" Then
        Range("$DN$11").Select
    ElseIf ActiveCell.Address = "$DN$11" Then
        Range("$DA$11").Select
    Else
        Range("$CZ$11").Select
    End If
    End Sub
    

    Toujours zen
    La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
    0
    1. chrisnapoli Messages postés 134 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour
      je viens d'essayer la macro et je pense que je me suis mal expliqué
      en fait votre macro déplace les lignes dans le sens haut bas bas haut(en horizontal)
      moi ce que je souhaite, c'est un déplacement dans le sens vertical
      je m'explique
      les deux barres de fractionnement reste toujours positionné comme je vous l'ai dit en CZ(compris) pour la première et en ligne 11(compris) pour la deuxième;si l'on considère que la position de la colonne après la barre de fractionnement est en est en DA je veux que en appuyant une fois sur le bouton je me retrouve avec DN a la place de DA( comme si javais cliqué tout en bas a droite sur la barre horizontale pour faire arriver ma colonne DN
      ce qui donne sur le tableau CZ puis la barre de fractionnement puis DN DO DP...etc
      un deuxième clic sur le bouton doit me ramener a la position initiale (en DA a droite de la barre de fractionnement juste après CZ)
      EN fait si le changement se fait dans le sens vertical aucun changement ne doit se faire dans le sens horizontal(la barre de fractionnement restant fige aussi bien en position CZ que en position ligne 11) j'espère avoir été compris
      si vous me trouvez la solution peut on imaginer sur le même principe plusieurs boutons sur la feuille pour aller a différentes positions dans ma feuille et doit on mettre chaque macro dans un seul ou plusieurs
      modules différents

      Merci de votre aide Cordialement Christian
      0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Re
      Tu avais mis : toujours en ligne11
      Maintenant tu parles de colonnes et uniquement vertical, c'est sans doute clair pour toi mais je reste perplexe...
      Tu peux avoir un "bouton" mobile qui se déplace et te permette de choisir la destination mais il faudrait comprendre ce que tu veux comme résultat.
      0
    3. chrisnapoli Messages postés 134 Date d'inscription   Statut Membre Dernière intervention   > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bonjour
      avec le fichier vous allez de suite comprendre
      https://www.cjoint.com/?3EsoLvkszvN
      Merci
      0
    4. chrisnapoli Messages postés 134 Date d'inscription   Statut Membre Dernière intervention   > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
       
      re
      je voulais vous demander également si vous connaissez la modification rectificative afin que dans ce code en dessous ;dans la plage NN12:NN251, il ne soit pris en compte qu'une cellule sur deux et que la procédure clearcontents soit annulée(que mes lignes ou il y a des formules ne soient pas effacées,et que je puisse récupérer l'historique des cotations a la fermeture du classeur afin de pouvoir les coller ailleurs)
      j"ai des formules écrites de NY12 à PB 251 en ligne 12 14 16 18
      ..etc jusque 250
      ;seules les lignes 13 15 17 19..etc jusqu'a 251 sont remplies de chiffres.
      actuellement des que le Timer se met en route il m'écrase ces formules parce qu'il prend en compte toutes les cellules contenues dans la plage sans exception( donc je me retrouve avec seulement les chiffres en mode valeur ce qui est normal, mais les formules contenues dans les lignes cités ci dessus ont disparus
      Merci de m'indiquer si vous savez une solution simple.
      Bonne journée


      dans thisworkbook

      Option Explicit

      Private Sub Workbook_Open()
      Sheets("statist").Select
      c = 389
      Application.OnTime TimeValue("09:01:00"), Procedure:="RecupCotation" '"09:01:00"
      Range("NY12:QL251").ClearContents
      End Sub

      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      ArretCotation
      End Sub

      dans module 1

      Sub RecupCotation()
      Durée = Now + TimeValue("00:01:00")
      Application.OnTime Durée, "RecupCotation"
      Range(Cells(12, c), Cells(251, c)) = Range("NN12:NN251").Value
      c = c + 1
      If c >= 419 Then ArretCotation 'N° de la dernière colonne
      End Sub


      Sub ArretCotation()
      On Error Resume Next
      Application.OnTime Durée, "RecupCotation", , False
      End Sub
      0
    5. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir

      que la procédure clearcontents soit annulée
      Il te suffit de mettre un apostrophe devant
       'Range("NY12:QL251").ClearContents 
      et elle va passer en vert.

      Merci de m'indiquer si vous savez une solution simple
      Il faut mettre tes formules dans une autre plage car la Procedure:="RecupCotation" ne peut pas être bridée.

      avec le fichier vous allez de suite comprendre
      C'est pas gagné, je ne vois pas le cheminement du fonctionnement. quand vous cliquerez sur le bouton graphe pas facile il est disparu, il faut jouer avec les ascenseurs pour le retrouver.
      0