LE NEWSMAGAZINE Nº1 DES NOUVELLES TECHNOLOGIES
4 utilisateurs connectés

Excel: compter les changements d'état.

JJ82 le 20 aout 2008 à 07h37
Bonjour le Forum,

J'ai un tableau Excel dans lequel je voudrais compter les différents changements d'état d'une ligne par rapport à la précédente:

ex
ligne 1: 1 0 2 3 0 etc...
ligne 2: 1 2 1 2 1
je voudrais un récapitulatif pour l'ensemble des lignes :
passage de 0 à 1: nb
passage de 0 à 2 : nb
passage de 3 à 2: nb
etc...(tous les cas présents)

Le récapitulatif prendrait en compte l'ensemble de toutes les lignes comparées une à une (suivante par rapport à la précédente) pour faire un total.
Mon tableau comporte 50 colonnes et 2500 lignes.
Merci de votre aide (formule ou macro?)
Bonne journée

yeti62 le 20 aout 2008 à 11h30
Bref, tu voudrais faire pour chaque colonne une somme des différences d'une ligne par rapport à la ligne qui la suit?
(j'essaie juste de simplifier le problème là :/ )

Edit : si j'ai vraiment compris ce que tu comptes faire, je crois qu'il te faut une vache de super formule... Un peu comme une sorte de suite numérique :|
-->Message édité par yeti62 le 20/08/2008 11:32:21<--
Moomba le 20 aout 2008 à 11h35
Bonjour

Ce que tu veut faire, c'est un truc dans ce genre ? :

Ligne 1 : 1 0 1 2 3 6 7
Ligne 2 : 1 1 1 2 4 5 7
Resultat: - * - - * * -
Résultat : nombre de différences : 3

C'est ça ? (si c'est le cas, on peut tricher :D )

Mais la ligne 3, on la compare à qui ? La 1 ou la 2 ?
-->Message édité par Moomba le 20/08/2008 11:37:59<--
-------
Celui qui a le pouvoir de faire le mal et qui ne le fait pas, celui là est le prince de l'univers... (Shakespeare)
La solution à vos soucis d'informatique : http://miacis.comze.com/Index.html
yeti62 le 20 aout 2008 à 11h53
Si j'ai pigé, la ligne 3 est comparée à la 2. :)
Moomba le 20 aout 2008 à 12h12
J'avais pas compris, mais avec l'explication de yeti62, c'est trés simple :

Crée une nouvelle macro. (outils, macro, nouvelle macro, et nome la "essai") Elle vas commencer à enregistrer, et bas clique sur arreter l'enregistrement (le carré bleu) aussitot.

Bon, ensuite, tu vas dans Outils, Macro, Macros
La, tu selectionne ta macro, et tu clique sur modifier.

Le code VBA apparait.

Le principe est le suivant : imagine que tu as 3 lignes, de 6 colonnes calées en huat à gauche ta feuille.

Le programme sera :

Sub essai()

Dim x As Integer
Dim y As Integer
Dim total_ligne As Integer

For y = 2 To 3
For x = 1 To 6

If Cells(y, x) <> Cells(y - 1, x) Then total_ligne = total_ligne + 1

Next x
Cells(y, 7) = total_ligne
total_ligne = 0
Next y

End Sub


Il ecrira donc dans la 7ieme colonne la différence entre cette ligne et la précédente :bien:

(hésite pas à demander si tu ne comprend pas un truc)
-->Message édité par Moomba le 20/08/2008 13:20:54<--
-------
Celui qui a le pouvoir de faire le mal et qui ne le fait pas, celui là est le prince de l'univers... (Shakespeare)
La solution à vos soucis d'informatique : http://miacis.comze.com/Index.html
JJ82 le 20 aout 2008 à 13h22
Bonjour à tous et merci pour votre aide.
En fait je compare toujours la ligne suivante avec la précédente, cellule par cellule.
Je voudrais une récap (placé en bas de tableau par ex) sous forme:
passage de 0 à 1: nb de fois ? (sur tout le tableau)
passage de 0 à 2 : nb de fois ?
passage de 3 à 2: nb de fois ?
etc...( en listant tous les cas présents dans le tableau)
qui reprendrait, pour le tableau entier, le total de chaque cas de passage.

merci à vous
bon AM

Moomba le 20 aout 2008 à 13h34
:hello: hophophop ! faut chercher un peu aussi non ? :sarcastic:

(C'est moi qui dit ça alors que c'est yeti62 qui m'as expliqué ce que tu demandait :D )

Bon, la solution est la suivante :

Reprend le programme donne juste avant, et remplace Cells(y, 7) = total_ligne par Cells(a,b) = total_ligne avec a et b les coordonnées voulues.
Par exemple : Si dans la cellule (2501,51) tu as passage de 0 à 1: et bas tu mettra Cells(2499+y,52) = total_ligne, ainsi il commencera par la case 2499+2=2501 à la première itération, puis à la 2502 à la seconde, etc... :bien:

-->Message édité par Moomba le 20/08/2008 13:46:12<--
-------
Celui qui a le pouvoir de faire le mal et qui ne le fait pas, celui là est le prince de l'univers... (Shakespeare)
La solution à vos soucis d'informatique : http://miacis.comze.com/Index.html
JJ82 le 20 aout 2008 à 14h13
Re bonjour
je joins un ex dans Cjoint:
http://cjoint.com/?iuoiKCx3Q0 pour plus de clarté.
Ca correspond à la macro?
merci
Moomba le 20 aout 2008 à 15h34
Je ne peut pas acceder à cela d'ici, mais je m'en occupe ce soir, c'est promis :jap:
-------
Celui qui a le pouvoir de faire le mal et qui ne le fait pas, celui là est le prince de l'univers... (Shakespeare)
La solution à vos soucis d'informatique : http://miacis.comze.com/Index.html
Gorfael le 20 aout 2008 à 16h21
Salut JJ82 et le forum
Suivant l'exemple donné =>
J2 : =SOMMEPROD(($A$1:$E$1=0)*($A$2:$E$2=1)*1)
J3 : =SOMMEPROD(($A$1:$E$1=1)*($A$2:$E$2=2)*1)
etc...
ceci ne me satisfait que moyennement. Je les nombre en H et I de manière à pouvoir faire une recopie. De plus, je ne comprends pas le fonctionnement que tu cherches à atteindre ; 0 à 0 => pas de changement (on compte 1 à 1 avec) ou valeur à part ?
On compte la réciprocité (4 à 3 / 3 à 4) dans la même réponse où c'est deux résulats ?
A+
-------
Plus tu es moins précis, moins les réponses sont plus adaptées!
La qualité et la précision de la réponse sont proportionnelles à celles de la question, et la conditionne.
JJ82 le 20 aout 2008 à 16h48
Re bonjour,
merci Gorfael pour ta réponse.

En fait je fais une stat pour "balayer" mon tableau (50colonnes, environ 2500 lignes) et dénombrer pour chaque cas de passage existant dans le tableau d'une ligne à la suivante (0 à 0, 1 à1, 1à2, 3à2 ....) le nombre GLOBAL pour chaque cas existant.(récap)

Pour répondre à ta question, 0à0 signifie que en cellule A10 par ex il y a un 0 et en A11 un 0 aussi (ce n'est pas un résultat d'addition ou autre calcul, mais des NOMBRES )

Avec somme prod c'est plus difficile car je ne connais pas tous les cas existants dans ce tableau.
merci et bonne soirée

Gorfael le 20 aout 2008 à 17h07
Salut JJ82 et le forum
Petite critique : quand tu t'embête à créer un fichier de test, pourquoi le faire aussi réduit ? Préciser dès le départ les limites comme tu viens de le faire 50 Colonnes/5000 lignes aurait écarté la version formule.

Questions ;
On compare ligne 1 avec ligne 2, ligne 3 avec ligne 4 ou ligne 1 avec ligne 2, ligne 2 avec ligne 3 ?

On peut se baser sur la ligne 1 et la colonne A pour définir ton tableau ?

0 à 0, 1 à 1, 3 à 4, 4 à 3, 0 à 4 font parties de 5 totaux différents ?

Comment et où sortons le résultat ? En ligne à une colonne du tableau ?

:edit N'ayant pas de réponse à mes question, un p'tite macro
Sub test()
Dim Col As Integer
Dim Lig As Long
Dim X As Long
Dim Flg As Boolean
Dim Tab_V()
ReDim Tab_V(1 To 3, 0)
For Lig = 1 To [A65536].End(xlUp).Row - 1
For Col = 1 To [IV1].End(xlToLeft).Column
Flg = True
For X = 1 To UBound(Tab_V, 2)
If Tab_V(1, X) = Cells(Lig, Col) And Tab_V(2, X) = Cells(Lig + 1, Col) Then
Tab_V(3, X) = Tab_V(3, X) + 1
Flg = False
Exit For
End If
Next X
If Flg Then
ReDim Preserve Tab_V(1 To 3, 0 To UBound(Tab_V, 2) + 1)
Tab_V(1, UBound(Tab_V, 2)) = Cells(Lig, Col)
Tab_V(2, UBound(Tab_V, 2)) = Cells(Lig + 1, Col)
Tab_V(3, UBound(Tab_V, 2)) = 1
End If
Next Col
Next Lig
For X = 1 To UBound(Tab_V, 2)
Cells(X + 1, Col + 2) = Tab_V(1, X) & " à " & Tab_V(2, X)
Cells(X + 1, Col + 3) = Tab_V(3, X) & " fois"
Next X
End Sub

A+
-->Message édité par Gorfael le 21/08/2008 10:03:23<--
-------
Plus tu es moins précis, moins les réponses sont plus adaptées!
La qualité et la précision de la réponse sont proportionnelles à celles de la question, et la conditionne.
JJ82 le 21 aout 2008 à 08h02
Bonjour à vous tous,
j'ai essayé hier soir de "repérer" tous les changements d'état existant dans mon tableau (environ une trentaine).(je pensais bien plus, d'où mon idée de macro)
Ce matin je suis en rtt, je vais employer sommeprod en renvoyant en A1 et A2 les différentes valeurs d'état successivement.
Pour la macro: stand bye, je vous tiens au courant demain si j'ai abouti avec la formule.
Merci et bonne journée.
Moomba le 21 aout 2008 à 09h05
Désolé pour le retard. Je n'ai plus internet chez moi, je ne peut donc pas regarder ton fichier Excel... :'(

De plus, je comprend de moins en moins bien ce que tu cherche à faire... :??:

Bon courage en tous cas :bien:
-------
Celui qui a le pouvoir de faire le mal et qui ne le fait pas, celui là est le prince de l'univers... (Shakespeare)
La solution à vos soucis d'informatique : http://miacis.comze.com/Index.html
JJ82 le 22 aout 2008 à 07h30
Bonjour à tous,
Je suis arrivé au résultat par formules (laborieusement...).
Encore merci et bonne journée


À PROPOS DU FORUM MICRO HEBDO

LES FORUMS THÉMATIQUES ET TECHNIQUES

LES FORUMS GÉNÉRAUX

ARCHIVES DU FORUM

publicité
01Informatique
01 INFORMATIQUE
L'hebdo de référence des décideurs informatiques.
Micro Hebdo
MICRO HEBDO
L'hebdo qui vous simplifie la micro
et Internet.
L'Ordinateur Individuel
L'ORDINATEUR INDIVIDUEL
Le mensuel informatique qui vous informe et vous conseille.
Nous contacter  |  Charte de confiance  |  Voir notice légale

01net.  -  01men  -  RMC  -  BFM Radio  -  BFM TV  -  TousLesPodcasts  -  01informatique.fr  -  Association RMC-BFM
Tous droits réservés © 1999 - 2009 Groupe 01 - 01net.