Ecrire la macro réalisée avec l'enregistreur de macro sous Excel en VB correct
mimi3581
Messages postés3Date d'inscriptionmercredi 8 septembre 2010StatutMembreDernière intervention 9 septembre 2010
-
8 sept. 2010 à 16:01
mimi3581
Messages postés3Date d'inscriptionmercredi 8 septembre 2010StatutMembreDernière intervention 9 septembre 2010
-
9 sept. 2010 à 13:19
Bonjour,
Débutante en VB
J'ai une table excel sur laquelle je réalise plusieurs actions pour avoir seulement les informations qui m'intéressent.
J'ai utilisé l'enregistreur de macros pour pouvoir lancer la macro plus tard.
Bien que très pratique, l'enregistrement automatique d'Excel tend à créer un code de mauvaise qualité. Donc j'aimerai transformer ce code en VB correct.
J'insère un extrait du code enregistrer:
lolokun
Messages postés1241Date d'inscriptionmardi 10 octobre 2006StatutMembreDernière intervention27 août 20137 8 sept. 2010 à 16:11
Bonjour,
plutôt que de donner un bout de code sans queue ni tête pour nous, sans colorisation syntaxiques ( je te rappelle que nous ne sommes pas sur ton projet et donc que nous ne savons pas ce que tu cherches à réaliser, on va pas s'amuser à essayer de deviner juste avec le code fourni), expliques en français ce que tu cherches à réaliser.
cela te permettra d'avoir une aide plus efficace et plus rapidement.
PS : gafee à la catégorie, vb6 est différent de vba excel
L'expérience, c'est une connerie par jour, mais jamais la même..
mimi3581
Messages postés3Date d'inscriptionmercredi 8 septembre 2010StatutMembreDernière intervention 9 septembre 2010 8 sept. 2010 à 16:36
Je te remercie pour t'intéresser à mon problème si rapidement. Désolé pour le 1er post.
alors en fait, j'ai une table excel que j'ai téléchargé sur internet (table sur le recensement de la population). Dans cette table, il y a beaucoup de colonnes qui sont inutiles pour mon étude, des calculs doivent être opérés...
Les différentes actions à traiter sur cette table sont les suivantes:
- supprimer les cinq premières lignes de commentaires
- enregistrer la table sous le nom « TEST »
- supprimer les colonnes inutiles suivantes : :J,K,L,M,N,O,P,T,U,V,X,Y,AA,AB,AC,AD,AE,AF,AG, AH, AI, AK, AL, AM, AN, AS,AT,AU,AV,AW,AX,AY,AZ,BA,BB,BC,BD,CP,CQ,CR,CS,CT,CU,CV,CW,CX,CY,DW,DX,DY,DZ,EA,EB,EC,ED,EE,EF,EG,EH,EI,EJ,EK,EL,EM,EN
-Une fois que la suppression de tous ces champs a eu lieu, il ne reste seulement les champs primordiaux à l'étude
-Afin de ne pas perdre les valeurs calculées, il est nécessaire de copier ces champs et les coller en collage spécial (« valeur » et non « formule »)
-Supprimer les champs qui ont servi aux calculs du nombre de personnes ayant plus de 60 ans : « F6074 », « F7589 », « F90P », « H6074 », « H7589 », « H90P »
-rajouter un champ « ANNEE »
-Enregistrer la table en .xsl et en .txt
J'espère que c'est plus compréhensible et que vous pourrez m'aider. N'hésitez à me demander d'autres informations.
Merci
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 8 sept. 2010 à 18:31
Salut,
en version reduite:
Sub tout()
With ActiveSheet 'pour n'appliquer ce qui suit qu'a la feuille active
'Attention le point en debut de ligne est obligatoire ! il permet de lier la
'ligne de code au with
.Rows("1:5").Delete Shift:=xlUp 'Suppression des 5 premières lignes
'Suppression des champs inutiles
.Range("J1:Y1,AA1:AI1,AK1:BD1,BN1:BO1,BY1:FE1").EntireColumn.Delete Shift:=xlToLeft
'insérer un nouveau champ "SOLDE_N" et faire le calcul
.Columns("L").Insert Shift:=xlToRight
.Range("L1").Value = "SOLDE_N"
.Range("L2").Formula = "=J2-K2"
.Range("L2").AutoFill Destination:=Range("L2:L36682"), Type:=xlFillDefault
.Range("L2:L36682").Copy '? copier/coller les chiffres en valeurs et non formule
.Range("L2:L36682").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
.Range("M2").Value = 424
.Columns("H").Insert Shift:=xlToRight
End With
End Sub
note que le "select" et autre "activate", sauf exception, ne servent à rien. Ils sont source d'erreur de lenteur et d’épilepsie