Bonjour,
Je dispose d'un tableau à 2 dimensions, constitué de ~ 60 colonnes, et d'une feuille avec ~60 colonnes. Pour faciliter la naviguation, certaines colonnes doivent être masquées.
Lorsque je souhaite écrire le tableau dans ma feuille, à l'aide de la méthode Range("..." ) = Montableau
ou Cells(Row,1).resize(Lbound(montb),Ubound(montb)) = montb
Les colonnes masquées crééent un bug : Après chaque colonne masquée le tableau est "réécrit" à partir de sa première colonne.
Pour pallier à ceci, pour écrire le tableau dans la feuille :
- Je stocke quelle colonnes est masquée
- Je démasque toutes les colonnes
- J'écris mon tableau
- Je masque les colonnes initialement masquées.
Cela ralenti considérablement ma macro. Est-il possible d'écrire mon tableau directement, avec la même méthode que Range("..." ) = montableau, malgré les colonnes masquées ?
Voici ce que j'ai codé temporairement pour contourner le problème :
Code :
- 'Stock wich column is hided or not, Hidden = True
- ReDim tbvisiblecolumn(lastcolmb)
- For i = 1 To lastcolmb
- If Columns(i).EntireColumn.Hidden = True Then
- tbvisiblecolumn(i) = True
- Else
- tbvisiblecolumn(i) = False
- End If
- Next
- 'Unhide all columns
- On Error Resume Next
- For i = 1 To lastcolmb
- If tbvisiblecolumn(i) = True Then
- Columns(i).EntireColumn.Hidden = False
- End If
- Next
- On Error GoTo 0
- 'Write tbwrite()in sheet mb
- If CBOptions = False Or ActiveCell.Value = "" Then
- If nbrow > 1 Then mb.Rows(Arow + 1).Resize(nbrow - 1).EntireRow.Insert Shift:=xlDown
- Range(mb.Cells(Arow, 1), mb.Cells(Arow + nbrow - 1, lastcolmb)) = tbwrite
- Else
- mb.Rows(Arow + 1).Resize(nbrow).EntireRow.Insert Shift:=xlDown
- mb.Cells(Arow, 1).Resize(nbrow + 1, lastcolmbt) = tbwrite
- End If
- 'Hide columns wich where hided
- For i = 1 To lastcolmb
- If tbvisiblecolumn(i) = True Then
- Columns(i).EntireColumn.Hidden = True
- End If
- Next
- OptimizeCode_End
|
Merci d'avance !
Message édité par framboize1 le 23-11-2018 à 15:01:53