Créer macro par macro

Bonsoir le forum,

dans ce projet pour un de nos membres, j'aimerais créer une macro dans chaque nouvelle feuille créée, macro destinée à faciliter la navigation dans les-dites feuilles (S15, S16,...), créées lors du clic sur le petit bouton rouge.

J'ai trouvé sur la Toile le code suivant dont tout le monde a l'air enchanté... sauf moi : Erreur 9. L'indice n'appartient pas à la sélection.

J'ai activé l'option 'Accès approuvé au modèle d'objet VBA' comme préconisé.

        'Ecriture de la macro de navigation
        Code= "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
        Code = Code & vbCrLf & "If Not Intersect(Target, Range(""C1:I1"")) Is Nothing Then"
        Code = Code & vbCrLf & "    ActiveWindow.ActivePane.ScrollRow = -25 + ((Target.Column - 2) * 27)"
        Code = Code & vbCrLf & "End If"
        Code = Code & vbCrLf & "End sub"
        With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
            x = .CountOfLines + 1
            .InsertLines x, Code
        End With

Ci-joint le projet en question. Une seule macro dans GLOBAL, code ci-dessus inclus, sous commentaire.

En vous remerciant pour vos lumières!

Curulis57

21adlmpri.xlsm (62.12 Ko)

bonsoir,

Moi je ferai plutôt un truc dans ce genre dans ThisWorkbook :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Left(Sh.Name, 1) = "S" Then
   If Not Intersect(Target, Range("C1:I1")) Is Nothing Then
      ActiveWindow.ActivePane.ScrollRow = -25 + ((Target.Column - 2) * 27)
   End If
End If
End Sub

Bien sur, il faut qu'il n'y ait pas d'autre feuilles dont le nom commence par "S"

Nota : Attention à bien calibrer ton Intersect :

If Target.Count = 1 'and/or Target.Rows.Count = 1...
If Target.Column > 2 and Target.Column <10...

Sinon il y a toujours la possibilité de dupliquer une feuille modèle qui comporterait déjà la macro...

A+

Bonsoir Galopin,

GEANT! C'est super cool comme solution! Puissant le WorkBook!

Plutôt qu'une macro, j'ai plutôt complété le code avec un "ActiveWindow.FreezePanes = True" en A3.

Je n'avais jamais fait attention aux possibilités de WorkBook. Erreur!

Ça m'ouvre un champ exploratoire très excitant!

Mille mercis, Galopin!

A+

Rechercher des sujets similaires à "creer macro"