Nombre cellules consécutives
Résolu/Fermé
nanie
-
31 janv. 2013 à 17:24
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 - 11 févr. 2013 à 18:26
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 - 11 févr. 2013 à 18:26
A voir également:
- Nombre cellules consécutives
- Comment faire la somme de plusieurs cellules non consécutives sur excel - Guide
- Verrouiller cellules excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Concatener deux cellules excel - Guide
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Google Docs
10 réponses
via55
Messages postés
14509
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
2 janvier 2025
2 739
31 janv. 2013 à 18:23
31 janv. 2013 à 18:23
Bonjour
une piste :
Si par ex plage de CCCPP etc en B1:M1
En B2 mettre la formule =SI(B1=A1;A2&B1;B1) et l'étirer jusqu'à la fin de la plage
(ça regroupe les C)
En B3 mettre : =SI(OU(C2="P";C2="");B2;"") et étirer
(ne retient que les groupes avant P ou vide )
En B4 mettre =NB.SI(B3:P3;"C")+NB.SI(B3:P3;"CC")*2+NB.SI(B3:P3;"CCC")*3
(comptabilise les groupes de 1 à 3 C)
Cordialement
une piste :
Si par ex plage de CCCPP etc en B1:M1
En B2 mettre la formule =SI(B1=A1;A2&B1;B1) et l'étirer jusqu'à la fin de la plage
(ça regroupe les C)
En B3 mettre : =SI(OU(C2="P";C2="");B2;"") et étirer
(ne retient que les groupes avant P ou vide )
En B4 mettre =NB.SI(B3:P3;"C")+NB.SI(B3:P3;"CC")*2+NB.SI(B3:P3;"CCC")*3
(comptabilise les groupes de 1 à 3 C)
Cordialement
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
1 févr. 2013 à 10:05
1 févr. 2013 à 10:05
Bonjour à tous
Si les macros ne te font pas peur, on peut passer avec une seule formule
https://www.cjoint.com/?3BbkcSgPrmc
Alt-F11 pour voir la macro
Dans ton classeur
Alt-F11 pour passer dans l'editeur VBA
Insertion/Module
Copier le tout
Bonne suite
Si les macros ne te font pas peur, on peut passer avec une seule formule
https://www.cjoint.com/?3BbkcSgPrmc
Alt-F11 pour voir la macro
Dans ton classeur
Alt-F11 pour passer dans l'editeur VBA
Insertion/Module
Copier le tout
Bonne suite
Je suis favorable à la macro (éviter que les utilisateurs ne touchent aux formules et éviter de créer encore plus de lignes ou colonnes qu'il n'y a déjà dans mon tableur), mais elle ne fonctionne pas... Pour info:
- Ma 1ère cellule qui peut contenir un P est en Q15
- J'ai enregistré la macro dans une feuille 'Module 2' car j'ai déjà une fonction 'explicit' dans la feuille 'Module 1' (si j'enregistre la macro dans le 'module 1' à la suite de l'autre macro 'explicit', la macro 'bugue')
Encore MERCI!
- Ma 1ère cellule qui peut contenir un P est en Q15
- J'ai enregistré la macro dans une feuille 'Module 2' car j'ai déjà une fonction 'explicit' dans la feuille 'Module 1' (si j'enregistre la macro dans le 'module 1' à la suite de l'autre macro 'explicit', la macro 'bugue')
Encore MERCI!
Bon tout fonctionne, il ne s'agissait que d'un problème de C au lieu de c :-)
Trop cool, merci à tous!!
Trop cool, merci à tous!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
1 févr. 2013 à 11:05
1 févr. 2013 à 11:05
Explicit n'est pas une macro mais une directive de compilation qui oblige à déclarer les variables, donc s'il y a deux Option Explicit, tu en supprimes une
pour les problèmes de majuscule/minuscule tu as la fonction Ucase
bonne suite
pour les problèmes de majuscule/minuscule tu as la fonction Ucase
bonne suite
Autre "problème" sur un compteur de cellules...
si la dernière cellule est un H, je souhaite compter ce H + le nombre de H qui précèdent:
P P P H H H H H H H H P P P P Résultat attendu = 0 (dernière cellule ? H)
P P P C C P H H H P P C H H H Résultat attendu = 3 (dernière cellule = H + 2 H qui précèdent)
H P H P H C H H H H H H H H H Résultat attendu = 9 (dernière cellule = H + 8 H qui précèdent)
Merci :-)
si la dernière cellule est un H, je souhaite compter ce H + le nombre de H qui précèdent:
P P P H H H H H H H H P P P P Résultat attendu = 0 (dernière cellule ? H)
P P P C C P H H H P P C H H H Résultat attendu = 3 (dernière cellule = H + 2 H qui précèdent)
H P H P H C H H H H H H H H H Résultat attendu = 9 (dernière cellule = H + 8 H qui précèdent)
Merci :-)
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
8 févr. 2013 à 11:34
8 févr. 2013 à 11:34
Bonjour
Une solution
RQ. on doit pouvoir se passer de macro...
Bonne suite
Une solution
Public Function CompteDer(c As String, plage As Range) As Long Dim ch As String, nbc As Long, cel As Range ch = "" For Each cel In plage ch = ch & cel.Value Next cel If Right(ch, 1) <> c Then CompteDer = 0 Else nbc = 0 While Right(ch, 1) = c nbc = nbc + 1 ch = Left(ch, Len(ch) - 1) Wend CompteDer = nbc End If End Function
RQ. on doit pouvoir se passer de macro...
Bonne suite
Tu es beaucoup trop fort ! C'est un vrai plaisir que d'avoir aussi vite des solutions quand on est bloqués...
Encore MERCI ccm81
Encore MERCI ccm81
C'est remoi :)
Est-ce que à la fonction 'compteder' ci-dessous il est possible d'ajouter la condition 'si cellule = F ou X continuer le compteur' ?
Pour l'exemple :
P P P H H H F H H H H P P P P Résultat attendu = 0 (dernière cellule diff de H)
P P P C C P H H H P F F H H H Résultat attendu = 3 (dernière cellule = H + 2 H qui précèdent, 2 F avant mais un P)
H F H F X F H H H H X H H H H Résultat attendu = 10 (dernière cellule = H + 3 H qui précèdent, 1 X à ne pas comtper, 4 H, F et X à ne pas comtper, 1 H à compter, 1 F à ne pas comtper, 1 H)
(pour résumer, faire abstraction des F et des X)
Public Function CompteDer(c As String, plage As Range) As Long
Dim ch As String, nbc As Long, cel As Range
ch = ""
For Each cel In plage
ch = ch & cel.Value
Next cel
If Right(ch, 1) <> c Then
CompteDer = 0
Else
nbc = 0
While Right(ch, 1) = c
nbc = nbc + 1
ch = Left(ch, Len(ch) - 1)
Wend
CompteDer = nbc
End If
End Function
Est-ce que à la fonction 'compteder' ci-dessous il est possible d'ajouter la condition 'si cellule = F ou X continuer le compteur' ?
Pour l'exemple :
P P P H H H F H H H H P P P P Résultat attendu = 0 (dernière cellule diff de H)
P P P C C P H H H P F F H H H Résultat attendu = 3 (dernière cellule = H + 2 H qui précèdent, 2 F avant mais un P)
H F H F X F H H H H X H H H H Résultat attendu = 10 (dernière cellule = H + 3 H qui précèdent, 1 X à ne pas comtper, 4 H, F et X à ne pas comtper, 1 H à compter, 1 F à ne pas comtper, 1 H)
(pour résumer, faire abstraction des F et des X)
Public Function CompteDer(c As String, plage As Range) As Long
Dim ch As String, nbc As Long, cel As Range
ch = ""
For Each cel In plage
ch = ch & cel.Value
Next cel
If Right(ch, 1) <> c Then
CompteDer = 0
Else
nbc = 0
While Right(ch, 1) = c
nbc = nbc + 1
ch = Left(ch, Len(ch) - 1)
Wend
CompteDer = nbc
End If
End Function
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
11 févr. 2013 à 18:26
11 févr. 2013 à 18:26
Une solution à tester
Appel =comptedersauf("H";A35:O35;"FX")
bonne suite
Public Function CompteDerSauf(c As String, plage As Range, sauf As String) As Long Dim ch As String, nbc As Long, cel As Range, s As String, k As Long ch = "" For Each cel In plage ch = ch & cel.Value Next cel ' supprimer tous les caractères de s dans ch If sauf <> "" Then For k = 1 To Len(sauf) ch = Replace(ch, Mid(sauf, k, 1), "") Next k End If If Right(ch, 1) <> c Then CompteDerSauf = 0 Else nbc = 0 While Right(ch, 1) = c nbc = nbc + 1 ch = Left(ch, Len(ch) - 1) Wend CompteDerSauf = nbc End If End Function
Appel =comptedersauf("H";A35:O35;"FX")
bonne suite
31 janv. 2013 à 18:32
31 janv. 2013 à 19:36
mais en une ligne oui
1° LAISSER N1 vide (sert à determiner que la cellule précédente contient la dernière donnée)
2° en O1 mettre =SI(B1="C";NBCAR(SI(OU(C1="P";C1="");SI(B1=A1;A2&B1;B1);""));0)
3°Etirer jusqu'en Z1
4°En AA mettre =SOMME.SI(O1:Z1;"<4";O1:Z1) qui comptabilise les bons C
1 févr. 2013 à 09:26