Comment faire pour figer la colonne de gauche (colonne A) et à partir de G (droite) ?

anthoYS

XLDnaute Barbatruc
Bonjour,


En effet, à droite à partir de G, apparaissent des informations en haut, or si on regarde à gauche, j'ai figé la première colonne (A), pour ainsi descendre à la date qui nous interressent, mais si j'enregistre le fichier étant plus bas, on ne verra plus les informations de droite à partir de G.

Donc je voulais savoir car il me semble qu'on puisse le faire, figer à partir de G en plus de A.

voir capture :


Merci
 

Pièces jointes

  • bloquer en haut à partir de G.jpg
    bloquer en haut à partir de G.jpg
    600.7 KB · Affichages: 71

phlaurent55

Nous a quittés en 2020
Repose en paix
Re,

il est possible de faire apparaître tout ce qui se trouve à partir de la colonne G dans une image qui garderait toujours la même position même lorsqu'on fait défiler les lignes.

Je ne sais pas le faire moi-même mais j'ai déjà vu cela sur le forum

à+
Philippe
 

job75

XLDnaute Barbatruc
Bonjour anthoYs, Philippe, le forum,

Voyez le fichier joint et cette macro :
Code:
Sub FigerPlage()
Dim lig&, col%
Application.DisplayAlerts = False 'en cas de cellules fusionnées
lig = ActiveWindow.ScrollRow - [Maplage].Row
col = ActiveWindow.ScrollColumn + 5 - [Maplage].Column 'le plus 5 à adapter au besoin
If (lig Or col) And Application.CutCopyMode = 0 Then [Maplage].Cut [Maplage].Cells(1 + lig, 1 + col)
Application.OnTime Now + 1 / 86400, "FigerPlage"
End Sub
A l'ouverture du fichier elle est lancée par la Workbook_Open.

Quand on active les barres de défilement la plage nommée MaPlage est déplacée.

Sauf si Excel est en mode Couper ou Copier (afin de pouvoir l'exécuter).

Ne pas fusionner des cellules dans la plage, elles seraient (en général) défusionnées...

A
 

Pièces jointes

  • FigerPlage(1).xlsm
    38.2 KB · Affichages: 45

job75

XLDnaute Barbatruc
Re,

Noter que si l'on veut des plages fusionnées dans MaPlage il suffit de les avoir nommées :
Code:
Sub FigerPlage()
Dim lig&, col%
Application.DisplayAlerts = False 'en cas de cellules fusionnées
lig = ActiveWindow.ScrollRow - [Maplage].Row
col = ActiveWindow.ScrollColumn + 5 - [Maplage].Column 'le plus 5 à adapter au besoin
If (lig Or col) And Application.CutCopyMode = 0 Then
  Application.ScreenUpdating = False
  [Maplage].Cut [Maplage].Cells(1 + lig, 1 + col)
  [Fusion1].Merge: [Fusion2].Merge: [Fusion3].Merge: [Fusion4].Merge
End If
Application.OnTime Now + 1 / 86400, "FigerPlage"
End Sub
Fichier (2).

A+
 

Pièces jointes

  • FigerPlage(2).xlsm
    38.5 KB · Affichages: 40

job75

XLDnaute Barbatruc
Re,

Avec 2 tests supplémentaires s'il y a plusieurs feuilles ou plusieurs fichiers ouverts :
Code:
Sub FigerPlage()
If ActiveWorkbook.Name = ThisWorkbook.Name Then 'si plusieurs fichiers ouverts
  If ActiveSheet.Name = [MaPlage].Parent.Name Then 'si plusieurs feuilles
    Dim lig&, col%
    Application.DisplayAlerts = False 'en cas de cellules fusionnées
    lig = ActiveWindow.ScrollRow - [MaPlage].Row
    col = ActiveWindow.ScrollColumn + 5 - [MaPlage].Column 'le plus 5 à adapter au besoin
    If (lig Or col) And Application.CutCopyMode = 0 Then
      Application.ScreenUpdating = False
      [MaPlage].Cut [MaPlage].Cells(1 + lig, 1 + col)
      [Fusion1].Merge: [Fusion2].Merge: [Fusion3].Merge: [Fusion4].Merge 'facultatif et à adapter
    End If
  End If
End If
Application.OnTime Now + 1 / 86400, "FigerPlage"
End Sub
Fichier (3).

A+
 

Pièces jointes

  • FigerPlage(3).xlsm
    40.9 KB · Affichages: 44

job75

XLDnaute Barbatruc
Re,

Allez pour faire bon poids avec plusieurs fichiers ouverts :
Code:
Public t# 'mémorise la variable pour la Workbook_Deactivate

Sub FigerPlage()
If ActiveSheet.Name = [MaPlage].Parent.Name Then 'si plusieurs feuilles
  Dim lig&, col%
  Application.DisplayAlerts = False 'en cas de cellules fusionnées
  lig = ActiveWindow.ScrollRow - [MaPlage].Row
  col = ActiveWindow.ScrollColumn + 5 - [MaPlage].Column 'le plus 5 à adapter au besoin
  If (lig Or col) And Application.CutCopyMode = 0 Then
    Application.ScreenUpdating = False
    [MaPlage].Cut [MaPlage].Cells(1 + lig, 1 + col)
    [Fusion1].Merge: [Fusion2].Merge: [Fusion3].Merge: [Fusion4].Merge 'facultatif et à adapter
  End If
End If
t = Now + 1 / 86400
Application.OnTime t, "FigerPlage"
End Sub
Et dans ThisWorkbook, pour lancer et arrêter le processus :
Code:
Private Sub Workbook_Activate()
FigerPlage 'lance le processus
End Sub

Private Sub Workbook_Deactivate()
On Error Resume Next
Application.OnTime t, "FigerPlage", , False 'arrête le processus
End Sub
Fichier (4).

A+
 

Pièces jointes

  • FigerPlage(4).xlsm
    41.8 KB · Affichages: 56

anthoYS

XLDnaute Barbatruc
Re @job75, je voulais comprendre quelque chose dans le code s'il te plaît.


VB:
Sub FigerPlage()
If ActiveSheet.Name = [MaPlage].Parent.Name Then 'si plusieurs feuilles
  Dim lig&, col%
  Application.DisplayAlerts = False 'en cas de cellules fusionnées
  lig = ActiveWindow.ScrollRow - [MaPlage].Row
  col = ActiveWindow.ScrollColumn + 5 - [MaPlage].Column 'le plus 5 à adapter au besoin
  If (lig Or col) And Application.CutCopyMode = 0 Then
    Application.ScreenUpdating = False
    [MaPlage].Cut [MaPlage].Cells(1 + lig, 1 + col)
    [Fusion1].Merge: [Fusion2].Merge: [Fusion3].Merge: [Fusion4].Merge 'facultatif et à adapter
  End If
End If
t = Now + 1 / 86400
Application.OnTime t, "FigerPlage"
End Sub

Comment interpréter cette ligne (ci-dessous) précisément ?
Code:
t = Now + 1 / 86400


Merci par avance,
 

anthoYS

XLDnaute Barbatruc
@job75 : Ok c'est un peu du chinois pour moi mais bon... faudra que je m'y plonge... parce que dans le code je ne vois pas de Now ni ne comprends en quoi c'est utile pour maintenir une plage nommée... mais bon... il doit bien y avoir une explication qui m'échappe pour l'heure....

Merci quand même....
 

job75

XLDnaute Barbatruc
Bonjour anthoYs, le forum,

Explications complémentaires avec ce fichier (5) :

- si la plage dépasse le bas de l'écran, maintenir le bouton gauche de la souris enfoncé quand on fait défiler la feuille pour pouvoir lire le bas de la plage

- si l'on sélectionne des cellules en bas de la feuille (XFD1048576 par exemple) la macro beugue car le couper-coller n'est alors pas possible.

Cela vous apprendra à vivre mais bien sûr on peut l'éviter avec On Error Resume Next.

Nota : je viens de voir que dans le fichier (4) une Feuil1 parasite (de type ThisWorkbook) s'est glissée.

Ce n'est pas très grave mais il vaudrait mieux refaire ce fichier à partir du fichier (3)...

A+
 

Pièces jointes

  • FigerPlage(5).xlsm
    41.5 KB · Affichages: 43

Discussions similaires

Statistiques des forums

Discussions
312 169
Messages
2 085 924
Membres
103 042
dernier inscrit
slfjs