|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() |
Bonjour,
Je suis nouveau en VBA pour excel. J'ai un code qui marche en vba access, sur une table. Ce code permet de parcourir toute la table afin de faire des comptage. J'aimerais faire la même chose avec excel. voici le code en vba access: Code :
Merci d'avance |
||
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
Le modèle objet d'Excel est naturellement différent de celui d'Access et il n'y a donc pas de traduction automatique...
Tout va dépendre de la structure de ton fichier Excel. Prenons 2 cas extrêmes: - Tu as un classeur Excel par année qui contient un onglet par centre: Dans ce cas, tu pourrais utiliser un "super-classeur" qui va ouvrir successivement tous les classeurs par année et au sein de ceux-ci faire le traitement que tu veux centre par centre et écrire les résultats dans un onglet du "super-classeur". - Tu as toute ta table brute dans un seul onglet d'un seul classeur: Dans ce cas, il faut parcourir toutes les lignes de ton onglet et faire des tests sur les valeurs des colonnes 'annee' et 'centre' et appliquer les traitements en fonction du résultat des tests. Une autre alternative peut être d'écrire dans ton fichier Excel depuis ta base de données Acess. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
Bonjour,
Je suis dans le deuxième cas, l'ensemble des données brutes dans une feuille. Pour le traitement, comme l'illustre le code qui marche en vba access, l'objectif est de faire des filtres par année,puis par centre et de faire des traitements (somme, moyenne) sur les lignes filtrées. Je doit répéter ce travail pour chaque année, centre de la feuille. Le résultat obtenu devrait ressembler à un tableau croisé avec en colonne les traitement (moyenne, somme) et en lignes les années et les centres. Encore une fois merci. |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
Je n'ai pas l'habitude d'en utiliser mais justement, n'est-il pas possible de faire ce que tu veux simplement avec un TCD (auquel ça irait plus vite que d'écrire du code)?
S'il faut que tu en passes par l'écriture d'une macro VBA, commence par essayer de faire ce que tu peux par toi-même et on t'aidera lorsque tu bloques. |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() |
J'ai bien avancé et voici le premier code.
J'arrive à faire des boucles de filtres. Il manque la dernière étape, faire des calculs (somme, moyenne, min, max, ...) sur les cellules filtrées. Code :
1. je copie les colonnes sur lesquelles je veux travailler pour plus de précaution 2. je crée une liste unique sur les colonnes devant servir de filtre 3. à partir de ces listes, je défini des filtres avec les différentes valeurs contenue dans ces listes uniques 4. je recupère les lignes filtrées pour faire des calculs dessus. Blocage; j'aimerais faire range("D1").value= somme de la collonne C pour les lignes filtrées (visibles). Merci |
||
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Philippe TulliezDéveloppeur et formateur VBA, Excel et Word. Inscription : janvier 2010 Messages : 1 310 ![]() |
Citation:
Code :
range("D1") = Application.WorksheetFunction.Subtotal(9, Range("plage"))
__________________
Philippe Tulliez http://philippe.tulliez.be Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau) Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
|
|
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 889 ![]() |
Bonjour,
Citation:
![]() Excel est capable de faire ces calculs avec des formules (Voir Sommeprod) Bien sur ce n'est qu'un point de vue
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com