Bonjour tout le monde,
Cela fait un bout de temps de temps que je n'étais pas venuJe ne pensais pas me remettre à coder un jour mais les aléas du travail ont fait ue je dois apprendre le VBA pour Excel !
Plutôt une bonne nouvelle même si je trouve ce langage difficile à apprendre. Bref... Je vous explique ma demande.
Je dois mettre en place une macro sous Excel 2013 afin de récupérer des données arrivées "brutes" sur la DATA de mon classeur et les recopier sur la feuille ETAT de ce même classeur. Ensuite, je dois ajuster les colonnes et encadrer le tout.
Cela fait maintenant 2 semaines que je m'y suis mis et je n'avance pas des masses ... je suis à la page 50 de "VBA pour les Nuls" ;x
Après cette longue présentation, place à mon super code version 1 :
Je commence à la ligne 4 car j'aimerais ajouter un bouton pour les collègues qui seront amenés à utilisé cet état et qui ne savent pratiquement pas utilisé un pc. J'essaie de faire le plus simple pour eux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Sub MAJ_ETAT() ' Copie de DATA de la cellule B4 à la cellule O9999 vers ETAT Sheets("DATA").Range("B4:O9999").copy _ Destination:=Worksheets("ETAT").Range("A4:N4") ' Ajustement auto des colonnes Worksheets("ETAT").Columns("C").NumberFormat = "m/d/yyyy" Worksheets("ETAT").Columns("A:N").AutoFit Worksheets("ETAT").Columns("A:C").HorizontalAlignment = xlCenter Worksheets("ETAT").Columns("H:N").HorizontalAlignment = xlCenter End Sub
Et je copie de la même façon à partir de la ligne 4 car j'ai une entête de tableau qui se met à jour en fonction de la date, du numéro de contrat, nom client, etc...
La version 1 fonctionne mais je n'arrive pas à mettre en place l'encadrement sur les lignes non vides.
J'ai donc voulu améliorer avec une version 2 :
Mais là je tombe dans une boucle infinie ... et ça fini par planter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Sub MAJ_ETAT() Dim Lig As Long Lig = 4 'première ligne à vérifier Do While Not IsEmpty(Range("A" & Lig)) Worksheets("DATA").Range("B4:O1000").copy _ Destination:=Worksheets("ETAT").Range("A4:N1000") Loop MsgBox "Copie terminée" ' Ajustement auto des colonnes Worksheets("ETAT").Columns("C").NumberFormat = "m/d/yyyy" Worksheets("ETAT").Columns("A:N").AutoFit Worksheets("ETAT").Columns("A:C").HorizontalAlignment = xlCenter Worksheets("ETAT").Columns("H:N").HorizontalAlignment = xlCenter End Sub
Je sais, ma demande est longue, désolé ...
En gros, l'idéal pour moi serait de :
- pouvoir copier de façon dynamique, les données extraites formant un tableau variable d'une extraction à l'autre.
- mettre en forme automatiquement le résultat (centrer, changer le format de date, encadrer).
- plus tard effectuer des sous totaux en fonction d'une colonne "année". Mais ce sera pour lus tard![]()
Le tout avec un seul click pour mes collègues !
Voilà, je pense que pour une première demande après une longue période c'est pas mal.
Merci à tout ceux qui auront pris la peine de me lire et à ceux qui pourront m'aider ! Des bisous.
Partager