Programmer en vb
Bonjour et bienvenue,

vous venez de vous inscrire et vous souhaitez avoir accès aux différents forum.
il vous suffit alors de poster une présentation sur le forum "Présentation" ou divers sujets
votre accès aux autres forums sera automatiquement autorisé.

A vos claviers :

Merci d'avoir pris le temps de lire.
Merci pour votre inscription.

L'équipe de Programmer-en-VB
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Statistiques
Nous avons 120 membres enregistrésL'utilisateur enregistré le plus récent est TutoariiNos membres ont posté un total de 6300 messagesdans 706 sujets
Recherche dans les forums

Utiliser cette méthode afin de trouver rapidement les discussions disponible sur notre forum.


Utiliser le bouton résolu

Dans votre message d'origine
cliquer sur le bouton



Ensuite tout en bas sur
Modifier le titre du sujet
cliquer sur le bouton

Résolu !!!

Ensuite changer l’icône du sujet par le bouton

Voilà pas plus compliqué que cela.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Partenaires

créer un forum



Annuaire referencement


Flux RSS

MSN 
Novembre 2018
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  

Calendrier


Partagez
Aller en bas
avatar
grisan29
Modérateur
Modérateur
Localisation : BRETAGNE Nord 29
Messages : 838
Date d'inscription : 25/07/2013
http://pascalcuisines.fr

ôter les lignes créer par l'enregistreur de macros pour supprimer des bordures

le Mer 1 Nov - 19:36
bonjour à tous et toutes
tout le monde est confronter un jour où l'autre par les lignes de code que l'enregistreur écrit en trop et qui ralentisse l'exécution du code
l'exemple que je vous donne est très simple
il s'agit d'effacer automatiquement des bordures verticales sur une feuille ici c'est dans la colonne Q la bordure gauche des lignes 19 à 49
voici le code que l'enregistreur a créer et qui fonctionne bien malgré qu'il n'est pas très "joli" a voir

Code:
Sub Macro1()
'
' Macro1 Macro
'

'
    Range("Q19:Q49").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub

la solution est d'enlever tous les .select et Sélection sauf que comme cela le code ne fonctionne plus et pourquoi ?
car avec .select la feuille est sélectionnée et sans il ne trouve plus la feuille du coup on est tenté de rajouter
Code:
sheets("feuil1").Range("Q19:Q49")
mais c'est pas mieux et très fastidieux d'enlever toutes les selection. (suivant le code), la solution est de simplifier le code puisque l'enregistreur donne la solution
en écrivant = xLNone en fin de chaque ligne et il fait le tour des cellules concernées pour effacer les bordures haute,basse, droite et gauche qui se trouve dans la plage concernée en ralentissant le reste de l'exécution, donc vous reprenez
Code:
Range("Q19:Q49").Select
vous enlever le select en laissant le point, puis comme ce sont les bordures que l'ont veux effacer il faut rajouter Borders qui est dans le code
ce qui donne

Code:
Range("Q19:Q49").Borders


puis pour le haut,bas, droit et gauche on a la fonction .LineStyle qui est dans le code

Code:
Range("Q19:Q49").Borders.LineStyle


puis pour les effacer on a xlNone en bout de lignes de code
ce qui donne une ligne de code

Code:
Range("Q19:Q49").Borders.LineStyle = xlNone

et voila pour une petite réduction de code issu de l'enregistreur
a tester

_________________
Pascal
http://vbaddict.altervista.org/Fichier_upload/grisan29/13.php

Comment mettre votre sujet en résolu.
 
Dans votre message d'origine

cliquer sur le bouton



Ensuite tout en bas sur 
Modifier le titre du sujet 
cliquer sur le bouton 

Résolu !!!

avatar
IFFIC
Step_Three_VBA
Step_Three_VBA
Localisation : Sud Breizh ar mor
Messages : 443
Date d'inscription : 25/05/2013

Re: ôter les lignes créer par l'enregistreur de macros pour supprimer des bordures

le Ven 3 Nov - 18:04
Bonsoir Pascal Very Happy , et à tous, ou Bonjour s'il est plus tôt demain,
Il y a effectivement à faire un sérieux nettoyage de lignes inutiles lorsque l'on enregistre une macro!
Souvent une seule ligne est suffisante, alors que Bill nous en fourgue une caisse. Embarassed

Si j'interviens, ce n'est que pour mettre le doigt sur une bonne habitude à avoir.
- 1) Cibler le Classeur en cours et la feuille active, car cela pourra servir à éviter confusion.
- 2) Toujours parler en mode "R & C" car en disant: ".Range ("Q19:Q49")" on l'a seulement dans le "Q". (Sans jeu de mot)

Alors que dire; ".Range(Cells(19, 17), Cells(49, 17)) va permettre en amont de déterminer la ligne et la colonne choisies

Exemple:
HAUT= 19; BAS =  49
COL = 17 (Correspondant à la dix-septième lettre de l'alphabet qu'est le "Q") …Moi j'aurais mis 69, mais bon!
Ce qui donne un code plus amplement gérable :

".Range(Cells(HAUT, COL), Cells(BAS, COL))"

Je sais; Pascal que tu es au fait de cette utilisation. Mon but n'est que de le rappeler à ceux qui passeront par là.

Ci-joint pour cela, un petit fichier montrant la méthode (N B: Je suis passé en autre zone de cellules pour visualisation plus aisée)

A noter qu'en mettant les images dans un module de classe, on aurait réduit l'écriture sérieusement.
http://www.cjoint.com/c/GKdq5BHYlo4


Amicalement comme il est évident,
Yves
avatar
grisan29
Modérateur
Modérateur
Localisation : BRETAGNE Nord 29
Messages : 838
Date d'inscription : 25/07/2013
http://pascalcuisines.fr

Re: ôter les lignes créer par l'enregistreur de macros pour supprimer des bordures

le Ven 3 Nov - 18:45
bonsoir Yffic
merci pour ton intervention , j'ai mis la colonne"Q" comme cela sans a priori
mais ce n'est exemple de réduction que j'ai proposer, car il y a pire et plus complexe avec l'enregistreur
ton fichier ne s'ouvre pas en direct a cause de son extension

_________________
Pascal
http://vbaddict.altervista.org/Fichier_upload/grisan29/13.php

Comment mettre votre sujet en résolu.
 
Dans votre message d'origine

cliquer sur le bouton



Ensuite tout en bas sur 
Modifier le titre du sujet 
cliquer sur le bouton 

Résolu !!!

avatar
IFFIC
Step_Three_VBA
Step_Three_VBA
Localisation : Sud Breizh ar mor
Messages : 443
Date d'inscription : 25/05/2013

Re: ôter les lignes créer par l'enregistreur de macros pour supprimer des bordures

le Ven 3 Nov - 21:06
Je ne pige pas, car c'est un fichier ". xlsm", qui doit fonctionner.
Il faut aussi souvent faire glisser le fichier du "Téléchargements" vers un autre de son choix.
avatar
grisan29
Modérateur
Modérateur
Localisation : BRETAGNE Nord 29
Messages : 838
Date d'inscription : 25/07/2013
http://pascalcuisines.fr

Re: ôter les lignes créer par l'enregistreur de macros pour supprimer des bordures

le Ven 3 Nov - 21:11
bonsoir Yffic
voici ce qu'il y a comme panneau d'avertissement quand ouvre ton exemple directement mais si on l'enregistre avant c'est bon
http://www.cjoint.com/c/GKdujRS6r76

_________________
Pascal
http://vbaddict.altervista.org/Fichier_upload/grisan29/13.php

Comment mettre votre sujet en résolu.
 
Dans votre message d'origine

cliquer sur le bouton



Ensuite tout en bas sur 
Modifier le titre du sujet 
cliquer sur le bouton 

Résolu !!!

Contenu sponsorisé

Re: ôter les lignes créer par l'enregistreur de macros pour supprimer des bordures

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum