Moyenne de colonnes avec VBA [Résolu/Fermé]

Signaler
Messages postés
56
Date d'inscription
lundi 4 avril 2016
Statut
Membre
Dernière intervention
11 février 2019
-
 Utilisateur anonyme -
Bonjour,
Tout d'abord, je travaille sous VBA grâce à EXCEL.
J'ai un problème je n'arrive pas à faire de simple moyenne sur des colonnes.
En effet, je vous présente de manière synthétique mon jeu de données :
A B
1 4
5 6
4 3
3 2

J'ai A dans la cellule A1 et B dans A2. Ainsi je voudrais faire apparaitre mes moyennes sous cette forme à partir de la cellule A4
A B
MOY MOY

HELP ! Ca me débloquerait grandement pour la suite de mon étude...
MERCI A TOU(TE)S D'AVANCE !

3 réponses

Messages postés
16138
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
4 avril 2020
2 915
bonjour
J'ai A dans la cellule A1 et B dans A2

t'es sûr car vu ce que tu présentes ?....

Si moynne colonne A
MsgBox Application.Average(Range("A1:A17"))
 Michel
Lils_Bis
Messages postés
56
Date d'inscription
lundi 4 avril 2016
Statut
Membre
Dernière intervention
11 février 2019

Pardon en effet, j'ai déraillé...
J'ai bien A dans la cellule A1 et B dans B1.....
Lils_Bis
Messages postés
56
Date d'inscription
lundi 4 avril 2016
Statut
Membre
Dernière intervention
11 février 2019

Donc mes moyennes dans D2 et E2 à faire apparaître
Messages postés
56
Date d'inscription
lundi 4 avril 2016
Statut
Membre
Dernière intervention
11 février 2019

Serait-il possible de le faire sous forme de boucles car j'ai 8 moyennes à faire sur mes 8 premières colonnes ?
Du genre quelque chose comme
For NbCol = 1 to 8
Afficher la moyenne dans la ligne 2 en partant de la colonne 11 jusque la colonne 19
Next NbCol

Pardon de ma naïveté, mais je suis un bébé sur VBA...
Lils_Bis
Messages postés
56
Date d'inscription
lundi 4 avril 2016
Statut
Membre
Dernière intervention
11 février 2019

En fait, si tu veux, c'est comme ma question sur les sommes de colonnes dans son contenu avec un nombre de lignes et de colonnes qui varie selon les classeurs.
Utilisateur anonyme > Lils_Bis
Messages postés
56
Date d'inscription
lundi 4 avril 2016
Statut
Membre
Dernière intervention
11 février 2019

Bonjour Lils_Bis,

J'ai 2 bonnes nouvelles :

1) Le code VBA pour ton exercice est terminé. Comme il est un peu long,
je préfère t'envoyer le fichier Excel correspondant.

---------------------------------------------------------------------------------------------------------

2) Te rappelles-tu quand je t'ai dit que ma macro ne devait être exécutée
qu'une seule fois (sinon ligne de Totaux en double) ? J'ai trouvé un moyen
pour que la macro détecte si une ligne de Totaux est déjà présente ou non ;
c'est seulement pour ce dernier cas qu'une ligne de Totaux sera ajoutée.

Donc tu peux exécuter la même macro sur TOUS tes questionnaires, cela
même si la ligne des Totaux est déjà présente !

---------------------------------------------------------------------------------------------------------

Dans tous les cas, ça ajoute ton tableau de statistiques côté droit, avec :
Moyenne, Ecart-type, Variance ; pour chaque colonne du questionnaire.

============================================================

ATTENTION

Il n'y a rien dans la macro pour détecter tes tableaux de moyennes,
car leur emplacement est variable selon le questionnaire (exemple :
1 ou 2 colonnes après la dernière colonne de données).

En conséquence, il FAUT OBLIGATOIREMENT que tu supprimes les colonnes
correspondant à tes Tableaux de moyennes (sinon : risque de superposition).

Mais ne t'inquiètes pas : ma macro remettra en moins d'une minute un tableau
de statistiques plus complet (puisqu'en plus des moyennes, il y a les écarts-
type et les variances ; pour tous ces nombres : 2 chiffres après la virgule).

---------------------------------------------------------------------------------------------------------

Si tu exécutes la macro sur une feuille où elle a déjà écrit elle-même le Tableau
de statistiques, alors elle détectera sa présence et ne cherchera pas à l'écrire
de nouveau (inutile, puisque les formules de stats sont présentes et correctes).

============================================================

Fichier Excel 2003 Questionnaires

Cordialement.  😊
 
Lils_Bis
Messages postés
56
Date d'inscription
lundi 4 avril 2016
Statut
Membre
Dernière intervention
11 février 2019
> Utilisateur anonyme
C'est magnifique, tout fonctionne parfaitement ! Vraiment mille mercis Albkan ! C'est super et grâce à toi j'ai compris beaucoup de choses grâce aux détails que tu demandes et que tu expliques parfaitement bien ! Encore merci ! Merci ! Merci !

Il n'est pas dit que je ne revienne pas vers toi pour d'autres choses... :)
Bonne journée !
Utilisateur anonyme > Lils_Bis
Messages postés
56
Date d'inscription
lundi 4 avril 2016
Statut
Membre
Dernière intervention
11 février 2019

Bonjour Lils_Bis,

Voici un complément qui te plaira sûrement (c'est un gros bonus) !
Je te souhaites une bonne lecture, longue et fructueuse !  😉

==================================================================

1) Si tu veux aller de ton classeur Excel en cours à l'Éditeur VBA, il suffit de faire
< Alt >< F11 > ; si tu le refais de nouveau, ça retourne au même classeur Excel,
mais en laissant ouvert l'Éditeur VBA.

2) Si tu veux quitter l'Éditeur VBA et retourner à ton classeur Excel en cours,
fais < Alt >< Q >. Cette fois, l'Éditeur VBA aura bien été fermé.

3) Si tu veux ouvrir la boîte de dialogue « Macro », il suffit de faire < Alt >< F8 >

4) Sans quitter la boîte de dialogue « Macro », et uniquement si tu veux
sélectionner une autre macro que la 1ère, fais < TAB > et < Flèche bas > ;
quand une macro de la liste est sélectionnée : < Alt >< T > ouvre la boîte
de dialogue « Options de macro ».

==================================================================

Si tu connaissais déjà les raccourcis clavier indiqués dans les points 1) à 4),
alors je ne t'ai rien appris de plus ; mais voici ce que j'ai oublié de te dire :

Pour lancer la macro Essai, tu peux faire < Alt >< F8 >, et comme c'est la 1ère
macro (forcément, puisque c'est la seule), tu peux aussitôt faire < Entrée >
pour l'exécuter.

Si c'était la 2ème macro de la liste (ou plus), il te faudrait faire : < Alt >< F8 > ;
< TAB > pour entrer sur le début de la liste, < Flèche bas > (n×) pour descendre
sur la macro concernée, puis < Entrée >.

Mais il y a encore plus simple : j'ai ajouté un raccourci clavier pour la macro Essai :
tu n'as même plus besoin de faire < Alt >< F8 > suivi d'une action ; fais simplement
< Ctrl >< E >.

C'est un raccourci clavier que j'ai ajouté grâce à la boîte de dialogue du point 4) :
« Options de macro ». Il suffit de mettre la lettre minuscule de ton choix dans la
petite case située juste à droite du texte "Ctrl+".

Et au même endroit, avec < Alt D >, ça va direct sur la case « Description », où tu
peux mettre un court texte pour commenter ce que fait ta macro (à l'intention
de l'utilisateur quand il sélectionnera cette macro dans la liste).

==================================================================

ATTENTION

Quand tu mets en place un tel raccourci clavier, il exécutera bien ta macro,
mais son action d'origine est perdue !

Exemples de ce qui se passe AVANT réaffectation de ces raccourcis :
< Ctrl >< A > : comme dans Word, ça sélectionne tout le document
< Ctrl >< E > : ça a l'air de ne rien faire, mais ça met le format scientifique
< Ctrl >< F > : ouvre la boîte de dialogue « Rechercher et remplacer » 1er onglet
< Ctrl >< H > : idem, 2ème onglet
etc...

Si tu veux retrouver, l'action d'origine du raccourci clavier, il faut enlever la lettre
minuscule que tu avais choisi dans « Options de macro » : va dessus et utilise
< Suppr > ou < Retour arrière >.

C'est immédiat : inutile de fermer ton classeur Excel, ni Excel lui-même !

==================================================================

Voici une dernière macro à ajouter à ton classeur Questionnaire à n colonnes... ;
mets-la au début du code VBA, juste au-dessus de Private Sub AddTotaux(),
et donc juste après Dim dcol As Integer, dlig As Long :


Sub GoTblStats()
  Dim k As Long: ActiveSheet.Unprotect
  k = [A1].CurrentRegion.Columns.Count + 3
  Application.Goto Cells(1, k), True
  ActiveSheet.Protect
End Sub


Au niveau de la feuille de calcul, ajoutes le raccourci clavier : Ctrl+ g ;
je ne détaille pas plus vu les explications qui ont précédé.

Tu auras bien sûr deviné ce que ça fait juste en lisant le nom de cette macro !
L'avantage sera d'autant plus évident que ton questionnaire sera très large
(nombre de colonnes important).

Je ne pense pas qu'il soit utile de rajouter autre chose à cet exercice, mais si tu
as un autre exercice intéressant à me proposer ultérieurement, tu sais que je
t'aiderai volontiers (si c'est de mon niveau).  😊
 
Utilisateur anonyme
Autre petit ajout :

1) Dans la Sub GoTblStats(), remplace Dim k As Long par Dim k As Integer ;
comme il s'agit d'un nombre de colonnes, tu en as sûrement moins de 32 768 !
Car voici la plage de Integer : -32 768 à + 32 767

Par contre, laisse tel que, donc avec le type long, si tu as des questionnaires
dont le nombre de colonnes est supérieur à 32 767

---------------------------------------------------------------------------------------------------------------

2) Action d'origine de < Ctrl >< g > : émettre un bip court sur le haut-parleur
(code bell : sonnerie)

Personnellement, je préfère éviter de surcharger ces 4 raccourcis clavier
(du plus important au moins important) :

< Ctrl >< s > : sauvegarder le fichier (save)
< Ctrl >< o > : ouverture d'un fichier (open)
< Ctrl >< w > : fermer la fenêtre (window close)
< Ctrl >< n > : nouveau document (new)
 
Messages postés
16138
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
4 avril 2020
2 915
salut frank

il a un truc à améliorer;
le cas où une colonne est vide
c'est fait, mais vu l'attitude de lilis_bis, j'abandonne le suivi;
Lils_Bis
Messages postés
56
Date d'inscription
lundi 4 avril 2016
Statut
Membre
Dernière intervention
11 février 2019

Je n'ai pas de colonnes vides mais merci quand même M.michel_m