VBA fonctionnant sur une seule feuille du classeur

elbaveux Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai un code VBA qui fonctionne parfaitement dans un classeur excel mais uniquement sur la première feuille.

Ne connaissant rien au sujet, je cherche une ame bien veillante qui pourra le corriger de façon à ce que ce code fonctionne sur toutes les feuilles du classeur et cela même si on en rajoute ou efface.

Merci
T.

le code:

Option Explicit

Sub Trouvercellfusionnées()
Dim cell As Range
With ActiveSheet.UsedRange
For Each cell In .Cells
With cell
If .MergeCells = True Then
.Activate
.RowHeight = 12.75
Call AutoFitMergedCellRowHeight(cell)
End If
End With
Next cell
End With
End Sub

Sub AutoFitMergedCellRowHeight(target As Range)
'MAcro de Jim Rech
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range
Dim ActiveCellWidth As Single, PossNewRowHeight As Single
If target.MergeCells Then
With target.MergeArea
.WrapText = True 'enclenche le renvoi à la ligne automatique (modif fs)
If .Rows.Count = 1 Then 'And .WrapText = True Then
Application.ScreenUpdating = False
CurrentRowHeight = .RowHeight
ActiveCellWidth = target.ColumnWidth
For Each CurrCell In target.MergeArea
MergedCellRgWidth = CurrCell.ColumnWidth + _
MergedCellRgWidth
Next
.MergeCells = False
.Cells(1).ColumnWidth = MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight = .RowHeight
.Cells(1).ColumnWidth = ActiveCellWidth
.MergeCells = True
.RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
CurrentRowHeight, PossNewRowHeight)
End If
End With
End If
End Sub

Private Sub Worksheet_Change(ByVal target As Range)
If target.MergeCells Then AutoFitMergedCellRowHeight target
End Sub

3 réponses

Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Bonjour,

C'est parce que ton code est associé à un unique onglet (celui qui est sélectionné dans l'arborescence à gauche quand tu vois le code).
- le code commun est à mettre dans un module (insertion > module)
- Private Sub Worksheet_Change est à adapter en le renommant Private Sub Workbook_Change et en le plaçant dans Workbook au niveau de l'arborescence.

A+
0
elbaveux Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ce retour.

Ok j'ai bien réussi à faire fonctionner sur chaque feuille du classeur.

Cependant si je rajoute des feuilles je voudrais ne pas avoir à revenir sur le code ce que je suis obligé de faire avec mon fichier actuellement...

Je dois ouvrir chaque feuille dans l'arbo il lui mettre :
Private Sub Worksheet_Change(ByVal target As Range)
If target.MergeCells Then AutoFitMergedCellRowHeight target
End Sub
sinon cela ne fonctionne pas :-(
T.
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Re,

Correction : Private Sub Worksheet_Change est à adapter en le renommant Private Sub Workbook_SheetSelectionChange ou Private Sub Workbook_SheetChange et en le plaçant dans ThisWorkbook au niveau de l'arborescence.

A+
0