Aide sur une macro pour compter le nombre de séquences?

maradjah

XLDnaute Nouveau
Bonjour à vous,

Dans le cadre d'une analyse statistique je suis amenée à dénombrer des séquences de chiffres pour chaque ligne d'un tableau,

j'ai trouvé sur le site un exemple très similaire, j'ai réussi modifier quelque peu la macro mais je ne suis pas arrivée à calculer les séquences correctement.

J'explique le problème:
J'ai un tableau statistique de (1500*400) , et je voudrais calculer pour chaque ligne:
-le nombre de séquences ou il n'y a que des 1
-le nombre de séquences ou il n'y a que des chiffres, différents de 1 et 0

Remarque: une séquence est constituée de 2 cases ou plus.

Je me suis permis de reprendre et de modifier le fichier que j'ai trouvé sur le site pour le mettre en exemple.

Je vous remercie pour votre aide.
 

Pièces jointes

  • Nombre_de_sequences2.xls
    27 KB · Affichages: 48

Gorfael

XLDnaute Barbatruc
Re : Aide sur une macro pour compter le nombre de séquences?

Salut maradjah et le forum
Un principe d'algorithme :
Code:
Sub tets()
Dim X As Long, Y As Integer
For X = 4 To Cells(Rows.Count, "A").End(xlUp).Row
    Cells(X, "L") = 0
    For Y = 1 To 9
        If Cells(X, Y) = 1 And Cells(X, Y + 1) = 1 Then
            Do
                Y = Y + 1
            Loop Until Cells(X, Y) <> 1 Or Y > 9
            Cells(X, "L") = Cells(X, "L") + 1
        End If
    Next Y
Next X
End Sub
Il fonctionne sur l'exemple donné, avec le résultat en L. Mais ce n'est qu'un principe qu'il convient de contrôler.
Pour les autres séquences, il faudrait utiliser vraisemblablement une instruction du type :
Code:
"23456789" like "*" & Cells(X, Y) & "*"
A+
 

maradjah

XLDnaute Nouveau
Re : Aide sur une macro pour compter le nombre de séquences?

Salut maradjah et le forum
Un principe d'algorithme :
Code:
Sub tets()
Dim X As Long, Y As Integer
For X = 4 To Cells(Rows.Count, "A").End(xlUp).Row
    Cells(X, "L") = 0
    For Y = 1 To 9
        If Cells(X, Y) = 1 And Cells(X, Y + 1) = 1 Then
            Do
                Y = Y + 1
            Loop Until Cells(X, Y) <> 1 Or Y > 9
            Cells(X, "L") = Cells(X, "L") + 1
        End If
    Next Y
Next X
End Sub
Il fonctionne sur l'exemple donné, avec le résultat en L. Mais ce n'est qu'un principe qu'il convient de contrôler.
Pour les autres séquences, il faudrait utiliser vraisemblablement une instruction du type :
Code:
"23456789" like "*" & Cells(X, Y) & "*"
A+


Bonjour Gorfael,

Je vous remercie d'avoir pris le temps de réfléchir à ma question, je vais tester cet algorithme tout de suite, cependant je n'ai pas saisi l’instruction :
Code:
"23456789" like "*" & Cells(X, Y) & "*"
qu'est ce qu'elle teste exactement?

Je ne connais des macros que quelques notions.

Merci a vous.
 

maradjah

XLDnaute Nouveau
Re : Aide sur une macro pour compter le nombre de séquences?

la première partie qui calcule les séquences à 1 marche bien,
par contre pour récupérer les séquences de nombres différents de 1 et zéro, j'ai modifié le code comme suit :
Code:
Dim X As Long, Y As Integer
For X = 4 To Cells(Rows.Count, "A").End(xlUp).Row
    Cells(X, "K") = 0
    For Y = 1 To 9
        If "23456789" Like "*" & Cells(X, Y) & "*" And "23456789" Like "*" & Cells(X, Y + 1) & "*" Then
            Do
                Y = Y + 1
            Loop Until Not ("23456789" Like "*" & Cells(X, Y) & "*") Or Y > 9
            Cells(X, "K") = Cells(X, "K") + 1
        End If
    Next Y
Next X

mais on dirais que la condition Like ne prend pas en considération les nombres de deux chiffres ou plus, 44, 125 etc.
Est ce ma syntaxe qui est erronée?
 

Gorfael

XLDnaute Barbatruc
Re : Aide sur une macro pour compter le nombre de séquences?

Salut maradjah et le forum
D'où l'importance de donner les bonnes infos dès le départ
Il y a toujours de multiples solutions sous excel.
Si les séquences contiennent des nombres pouvant être à plus de deux chiffres, il vaut mieux employer > 1"
Code:
Dim X As Long, Y As Integer
For X = 4 To Cells(Rows.Count, "A").End(xlUp).Row
    Cells(X, "K") = 0
    For Y = 1 To 9
        If  Cells(X, Y)>1 And Cells(X, Y + 1) >1 Then
            Do
                Y = Y + 1
            Loop Until Cells(X, Y) <2 Or Y > 9
            Cells(X, "K") = Cells(X, "K") + 1
        End If
    Next Y
Next X
Ouais, j'étais un peu fatigué pour trouver une solution aussi alambiquée, mais je travaillais sur des lettres, juste avant, j'ai donc adapté bêtement.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 239
Membres
103 497
dernier inscrit
JP9231