Problème avec formule COUNTIFS

Bonjour,

J'analyse actuellement des données météorologiques, des vitesses de vent (m/s) et des directions correspondantes.

J'aimerais dresser un tableau dans lequel sont comptées toutes les combinaisons possibles, par exemple combien de fois, sur l'ensemble de mes données, j'ai une vitesse de 8m/s dans la direction 120°.

Je galère un peu avec la fonction COUNTIFS, tout allait bien jusqu'à ce que je décide d'augmenter (multiplier par 15) le nombre de données à analyser.

Toute aide est la bienvenue...

D'avance merci

Bonjour,

tout allait bien jusqu'à ce que je décide d'augmenter (multiplier par 15) le nombre de données à analyser.

J'imagine que vous entendez par là des soucis de lenteur des calculs ?

Un tableau croisé dynamique (TCD), permet de réaliser les mêmes calculs, bien plus rapidement (et simplement).

Pour obtenir une aide un peu plus précise, il serait judicieux de joindre un classeur...

J'entends par là que la formule n'a plus aucun effet... Malheureusement mon fichier est beaucoup trop volumineux mais je vous ai mis deux captures d'écran.

02 01

La seconde montre le tableau que je souhaite obtenir, la prmeière montre la formule de base que j'ai utilisée pour remplir le tableau (ici pour la case (10; 30). Sur la colonne de gauche il s'agit de la vitesse du vent (m/s) et sur la première ligne on retrouve les directions (°).

Tout fonctionnait bien jusqu'à ce que j'arrive au COUNTIFS($AU2...

A partir de l'ajout de ce bout de formule les données ont arrêtés d'être prises en compte, comme si la formule donnait 0 pour chaque case. C'est curieux.

J'entends par là que la formule n'a plus aucun effet... Malheureusement mon fichier est beaucoup trop volumineux mais je vous ai mis deux captures d'écran.

Bonjour,

Inutile de fournir le fichier complet, un extrait représentatif suffit. En ce qui me concerne, je ne passerai pas 3h à déchiffrer une image contenant une formule qui fait 8 lignes, et un tableau où n'apparaissent même pas les en-têtes de colonne et ligne auxquels fait référence ladite formule...

Bonjour, c'est vrai que ce que je vous ai fourni n'est pas d'une grande utilité...

Vous trouverez un extrait du fichier joint à ce message.

Les données sont copiées-collées d'une page internet, ce qui explique les nombreuses cellules vides à certains endroits.

Chaque série de données est en trois colonnes :

  • vitesse du vent en km/h (colonnes B, G, L, Q, V...)
  • vitesse du vent en m/s (colonnes C, H, M, R, W...)
  • direction du vent en ° (colonnes D, I, N, S, X...)

Mon but est de compter les occurrences de chaque combinaison vitesse m/s-direction du vent (°).

Je veux regrouper les données dans un tableau (colonnes CX à EI) à l'aide de la formule COUNTIFS (ou NB.SI.ENS) mais quelque chose coince et j'ai beau me creuser la tête je ne trouve pas de solution.

Tout allait bien avec les données du triplet B, C, D jusqu'au triplet AP, AQ, AR. La prise en compte des triplets suivants, de AT, AU, AV jusqu'à CT, CU, CV ne s'est pas déroulée correctement alors que j'ai continué d'utiliser la même formule.

J'ai tenté pas mal de choses déjà, comme diviser la très grande série de données du triplet AT, AU, AV en plusieurs triplets plus petits (de AX, AY, AW jusqu'à CT, CU, CV) mais ce n'est visiblement pas cela.

J'ai également relu à plusieurs reprises ma formule pour vérifier que tout allait bien.

Je reste dispo pour tout renseignement complémentaire.

3wind.xlsx (829.22 Ko)

Voilà qui est nettement mieux !

Plutôt que de gérer une structure douteuse avec des colonnes en enfilade, je vous propose de commencer par regrouper les infos dans 3 colonnes uniques, dans un onglet dédié. Vous trouverez donc cette macro dans votre fichier (accessible via ALT + F11) :

Sub TranformerDonnées()

Dim Col As Integer, DerLig As Long

With Sheets("Wind2") 'Tout ce qui commence par "." s'y réfère
    For Col = 2 To 50 Step 5 'Dernière série en colonne 50, à adapter
        DerLig = .Cells(Rows.Count, Col).End(xlUp).Row 'Dernière donnée renseignée dans la colonne
        .Range(.Cells(2, Col), .Cells(DerLig, Col + 3)).Copy Sheets("Resultat").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) 'Copie et collage à la suite
    Next Col 'Série suivante
End With

End Sub

Pour que le code fonctionne, l'espacement entre séries doit être constant, de 5 colonnes exactement (Step 5 dans le code). J'ai ajouté un bouton pour exécuter la macro depuis la feuille resultat.

Ensuite, la formule "NB.SI.ENS" est 100 fois plus simple et fiable, puisqu'elle ne se réfère qu'à 2 colonnes. J'ai ajouté une petite MFC pour simplifier le visuel.

ATTENTION : j'ai modifié votre formule de calcul de la vitesse en mètre par seconde. En effet, même si vous n'affichez pas les décimales grâce à une modification du format, le nombre stocké dans la cellule reste décimal. Du coup, si vous cherchez ensuite à décompter les vitesses de 2 m.s-1 par exemple, seules les valeurs strictement égales à 2 sont comptés, et pas 2,1 ou 2,44 par exemple...

11wind2.xlsm (961.68 Ko)

Merci beaucoup pour l'aide que vous m'avez fourni. La macro est parfaitement adaptée et le rendu de la MFC est impeccable.

Cela m'a aussi aidé à comprendre où était mon erreur : je n'ai pas employé la fonction "ARRONDI", ce qui m'a perdu...

Encore merci et bonne continuation !

Merci beaucoup pour l'aide que vous m'avez fourni. La macro est parfaitement adaptée et le rendu de la MFC est impeccable.

Cela m'a aussi aidé à comprendre où était mon erreur : je n'ai pas employé la fonction "ARRONDI", ce qui m'a perdu...

Encore merci et bonne continuation !

Merci du retour, vous également !

Rechercher des sujets similaires à "probleme formule countifs"