VBA - Sélection et copy de bloc
F
Bonjour à tous,
J'ai un tous petit souci de VBA.
Dans le fichier joint vous trouverez un petit code VBA qui me sert à :
- Sélectionner un bloc matrice (de la ligne 7 inclus à la ligne 14 inclus). Ce bloc ne bouge pas il est masqué et toujours disponible.
- Copier ce bloque et le positionner en dessous de la ligne 14. (Il me colle la sélection au dessus)
- Grouper masquer le bloc d'origine.
Le petit problème que j'ai, concerne les offset (6, -8) enfin je pense.
Je voudrais que le bloc matrice soit toujours sélectionné et copié en dessous du dernier bloc existant. Peut importe le nombre de nvxbloc déjà créer.
Bon si vous avez une nouvelle approche pour éviter d'utiliser la fonction copy. je suis preneur avec explication.
Oui je sais c'est ridicule
Bonjour Franck,
Ci dessous, je te propose un code de remplacement avec mes commentaires :
Option Explicit 'GVS: Clause chaudement recommandée
Sub NvxBloc()
Dim xCompteurX As Long 'GVS: Déclaration explicite des variables recommandée
Dim lRow As Long
'A placer en début de routine
Application.ScreenUpdating = False 'Neutralise la visualisation
Application.DisplayAlerts = False 'Neutralise les alertes
xCompteurX = 0
' Votre routine
'===== Sub Creation()
'Calc = True 'Neutralisation pour calcul 'GVS: je n'ai pas compris cette ligne, je l'ai remplacée par la suivante
Application.Calculation = xlCalculationManual
'Copie du modèle
Range("NvxBlocBD").EntireRow.Hidden = False
Range("NvxBlocBD").Copy
'Insertion en dessous du dernier modèle copié
lRow = ActiveSheet.UsedRange.Rows.Count
ActiveSheet.Cells(lRow + 2, 1).Select
ActiveSheet.Paste
'Range("I60000").End(xlUp).Offset(6, -8).Paste Shift:=xlDown
'Cells.EntireRow.Hidden = False
Range("NvxBlocBD").EntireRow.Hidden = True
'Range("I60000").End(xlUp).Offset(6, -8).Select
Application.CutCopyMode = False 'Vider le presse papier
Application.ScreenUpdating = True 'Active la visualisation
Application.DisplayAlerts = True 'Active les alertes
'Calc = False 'Activation pour calcul 'GVS: je n'ai pas compris cette ligne, je l'ai remplacée par la suivante
Application.Calculation = xlCalculationAutomatic
End SubF
Bonjour Gérard,
Haaaa c'est parfait.
C'est exactement ce qu'il fallait.
Un grand merci à toi.
Je te souhaite une excellente fin de journée.