Compter occurence dans range contenant du texte / des chiffres

  • Initiateur de la discussion Initiateur de la discussion zebanx
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zebanx

XLDnaute Accro
Bonjour à tous,

Je cherche à obtenir des totaux de colonnes compilant soit du texte (initiales) soit des chiffres ?

Pour les "string", la séparation ne se fait que par un " ". S'il n'y en n'a pas, cela correspondrait à une seule personne.
Ci-joint quelques exemples plus clairs sur 3 configurations.

Merci pour votre aide et bonne journée
zebanx
 

Pièces jointes

après avoir fait briller ma boule de cristal :-D
une fonction personnalisée
VB:
Public Function compter(zone As Range) As Integer
Application.Volatile

For Each ele In zone
    tablo = Split(ele, " ")
    For i = LBound(tablo) To UBound(tablo)
        If IsNumeric(tablo(i)) Then
            comp = comp + (tablo(i))
        Else
            comp = comp + 1
        End If
    Next i
Next ele
  compter = comp
End Function
 
Bonjour Benoit59 et Vgendron

Super solutions qui fonctionnement parfaitement dans les trois configurations (uniquement du texte, texte + chiffres séparés par un " " à chaque fois, texte séparé par un espace + chiffres).
Et je suis content d'avoir une double solution matricielle + UDF.

Un grand merci à tous les deux , je vais pouvoir finaliser un travail urgent 😉

++
zebanx
 
manque un cint()
VB:
Public Function compter(zone As Range) As Integer
Application.Volatile

For Each ele In zone
    tablo = Split(ele, " ")
    For i = LBound(tablo) To UBound(tablo)
        If IsNumeric(tablo(i)) Then
            comp = comp + CInt(tablo(i))
        Else
            comp = comp + 1
        End If
    Next i
Next ele
  compter = comp
End Function
 
une remarque que je me fais en passant..
ce qui me sidère. c'est que la fonction "Isnumeric" est capable de dire s'il s'agit d'un nombre ou pas. et pourant.. il faut passer par un CINT pour en faire la somme...
franchement. des fois. on se demande...
 
une remarque que je me fais en passant..
ce qui me sidère. c'est que la fonction "Isnumeric" est capable de dire s'il s'agit d'un nombre ou pas. et pourant.. il faut passer par un CINT pour en faire la somme...
franchement. des fois. on se demande...

Le tableau est considéré comme Variant/String, donc il réagis comme un string lors de l'addition.
 
Merci à tous les deux pour vos réponses et les échanges constructifs (oui Benoist, le code modifié Val(tablo(i)) fonctionne bien). J'ai pu finaliser le fichier demandé grâce à vous avec deux méthodes à conserver pour une prochaine et très certaine utilisation.😉

Bonne soirée et bon we
zebanx
 
Bonsoir zebanx, vgendron, thebenoit59,

Il ne faut pas utiliser Application.volatile à tout bout de champ.

Ici cette instruction est tout à fait inutile et peut même être nuisible !

Toute modification d'une cellule de zone entraîne forcément le recalcul de la fonction.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour