Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Pour chaque cellule, donner le nombre de cellules identiques successives

  • Initiateur de la discussion Initiateur de la discussion nimo
  • 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 !

N

nimo

Guest
Bonjour à toutes et à tous,

Je suis nouveau sur le forum. J'ai toujours trouvé mes réponses sur le forum mais là...
Problème:
J'ai une liste ( 1500 lignes) de statuts: presents, absents.
exemple:
présent
présent
présent
présent
Absent
Absent
présent
présent
présent

J'aimerai pourvoir déterminer pour chaque cellule combien y a t'il de statuts identiques qui se suivent
Exemple:
présent 4
présent 4
présent 4
présent 4
Absent 2
Absent 2
présent 3
présent 3
présent 3

J'espère avoir été assez précis dans ma question et que quelqu'un pourra m'aider
Merci à tous
 
Re : Pour chaque cellule, donner le nombre de cellules identiques successives

Bonjour Nimo et bienvenu, bonjour le forum,


Une proposition VBA :
Code:
Sub Macro1()
Dim cel As Range 'déclare la varialbe cel (CELlule)
Dim n As Integer 'déclare la varialbe n (Nombre d'occurrences)
 
n = 1 'définit la variable n
For Each cel In Sheets("Feuil1").Range("A1:A" & Sheets("Feuil1").Cells(Application.Rows.Count, 1).End(xlUp).Row) 'boucle sur toutesles cellules éditées de la colonne A
    If cel.Offset(1, 0).Value = cel.Value Then 'condition : si la cellule en dessous a la même valeur que la cellule cel
        n = n + 1 'redéfinit la variable n
    Else 'sinon
       For x = n - 1 To 0 Step -1 'boucle 2 : sur les n-1 cellules supérieures à cel
            Cells(cel.Row - x, 1).Value = Cells(cel.Row - x, 1).Value & " " & n 'rajoutele nombre d'occurrence à la cellule
        Next x 'prochaine cellule supérieure de la boucle 2
        n = 1 'réinitialise la variable n
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle 1
End Sub
 
Re : Pour chaque cellule, donner le nombre de cellules identiques successives

Bonjour nimo, salut Robert 🙂

Toujours du VBA, mais ici une fonction personnalisée (dans Module1) :

Code:
Function NBSUIV(cel As Range) As Long
Dim deb As Range, fin As Range
Application.Volatile
Set deb = cel
Set fin = cel

1 If deb.Row = 1 Then GoTo 2
Set deb = deb.Offset(-1)
If deb <> cel Then Set deb = deb.Offset(1) Else GoTo 1

2 If fin.Row = Rows.Count Then GoTo 3
Set fin = fin.Offset(1)
If fin <> cel Then Set fin = fin.Offset(-1) Else GoTo 2

3 NBSUIV = fin.Row - deb.Row + 1
End Function
Fichier joint.

A+
 

Pièces jointes

Re : Pour chaque cellule, donner le nombre de cellules identiques successives

Re,

Voici une solution par formules.

1) Définir le nom plage avec cette formule :

Code:
=DECALER(Feuil1!$A$1;;;EQUIV("zzz";Feuil1!$A:$A)+1)
2) Formule matricielle en B1 :

Code:
=MIN(SI((LIGNE(plage)>LIGNE())*(plage<>A1);LIGNE(plage)))-MAX((LIGNE(plage)<LIGNE())*(plage<>A1)*LIGNE(plage))-1
A valider par Ctrl+Maj+Entrée et tirer vers le bas.

Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re : Pour chaque cellule, donner le nombre de cellules identiques successives

Suite à vos réponses, je suis parvenu exactement au réslutat que je cherchais. Merci.
J'ai un nouveau problème... Et j'espère ne pas abuser de votre aide.

En COL A, une liste de statuts.
En COL B, le reslutat de votre aide (compte le nombre de cellules identiques successives)
En COL C, ce sont des nombres de jours (déjà calculés).

En COL D, je souhaiterai faire la somme de la COL C tant que cellules de COL B sont identiques.

La condition pourrait être, si des cellules d'une colonne d'une plage sont identiques et succesivent, alors faire la somme d'une autre colonne de la même plage.

Exemple
ok............. ok............. ok............. ?
COL A...... COL B..... COL C.... COL D
A............. 4............. 1............. 3.5
A............. 4............. 0............. 3.5
A............. 4............. 1............. 3.5
A............. 4............. 1.5.......... 3.5
B............. 3............. 0............. 1
B............. 3............. 0............. 1
B............. 3............. 1............. 1
A............. 4............. 5............. 8
A............. 4............. 2............. 8
A............. 4............. 1............. 8

J'espère que quelqu'un réussira à me sortir une nouvelle fois de ce problème. Je vous remercie bien d'avance
 
Re : Pour chaque cellule, donner le nombre de cellules identiques successives

Bonjour nimo,

Sur la base du fichier déjà utilisé, fichier (3) joint avec cette formule matricielle en D2 :

Code:
=SOMME(INDIRECT("C"&MAX((LIGNE(plage)<LIGNE())*(plage<>A2)*LIGNE(plage))+1&":C"&MIN(SI((LIGNE(plage)>LIGNE())*(plage<>A2);LIGNE(plage)))-1))
Edit : remarquer qu'on peut supprimer sans problème la 1ère ligne...

A+
 

Pièces jointes

Dernière édition:
Re : Pour chaque cellule, donner le nombre de cellules identiques successives

Bonjour à tous,

Je reviens sur la question bien que vous ayez déjà apporté les bonnes solutions.
J'ai trouvé une autre solution pour y parvenir:

Liste des series en colonne A. Ici début en [A1]
En colonne B donner un numéro unique à chaque serie de cellules identiques successives
la première cellule de la 1ere serie doit etre 1. puis,
=> SI(A2<>A1;B1+1;B1)

Chaque serie est donc isolée par un nombre différent.

Ensuite par un somme.si, on peut compter le nombre de valeurs identiques, somme des plages qui s'y rattachent etc.

J'éspère avoir été assez précis. Merci pour votre implication
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…