Bonjour à tous, je programme un peu sur vba et je suis maintenant rendu à comprendre que des boucles existe pour arriver à éviter d'avoir 65776 lignes de code dans une macro.
Mon problème est que je dois remplir un tableau de 12 lignes par 10 colonnes automatiquement. Les lignes de ce tableau sont les 12 mois de l'année et les colonnes sont les numéros de PO. Il y a 5 numéros de PO et chaque numéro est divisé en 2 catégories (YTD spent et YTD remains).
J'aimerais être capable de remplir ce tableau en écrivant une boucle. Cependant je ne sais pas laquelle utilisée(for, while, loop, if). Je ne sais pas non-plus comment écrire une boucle.
Donc, pour résumé j'ai 3 filtres les mois, les numéros de PO et les 2 catégories. J'ai également 60 cellules à remplir (12 mois fois 5 colonnes).
Toutes mes informations sont dans un tableur et je voudrais les copier/coller dans un autre tableur pour ensuite sommé mes info et prendre cette somme pour la mettre dans mon tableau à remplir
Si vous pouvez m'aider à m'initier aux boucles se serait très appréciez. Désolé mais je n'ai pas de bout de code pour le moment car je ne sais juste pas comment faire.
Pour ajouter une aide ici, j'ai trouvé la séquence que j'aimerais exécuter.
1. Filtrer l'année 2012
2. Filtrer le numéro de PO
3. Filtrer les mois
4. Copier la colonne I
5. Coller les résultats dans un autre tableur (je dois coller sur une colonne différente à chaque fois puisque j'effectue un sommation sur la colonne)
6. Re-filtrer un autre mois jusqu'à ce que j'aie terminé tous les mois
7. Je change de numéro de PO
Je recommence les étapes 3-4-5-6 jusqu'à ce que j'aie terminer tous les numéros de PO
J'espère que c'est assez clair pour tout le monde.
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 Dim po As Integer po = 5 'J' ai 5 numéro de PO au total...éventuellement plus Dim month As Integer month = 12 'Il y a 12 mois dans une année For i = 1 To 5 If i < po Then Selection.AutoFilter Field:=6, Criteria1:="=i", Operator:=xlAnd 'J'essaie de mettre le critère égal à i 'puisque ça vaut mon numéro de PO While month <= 12 Selection.AutoFilter Field:=15, Criteria1:="=month", Operator:=xlAnd 'Ici je voudrais être en mesure de copier la colonne M et la coller dns l'autre tableur, faire la somme des cellules 'ensuite effectuer la somme dans mon tableau à remplir month = month + 1 Wend End If Next
Voici un bout de code pour essayer de vous faire comprendre ce que j'essaie de mettre en place.
Partager