IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Probleme de Logique macro EXCEL


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut Probleme de Logique macro EXCEL
    Salut,

    J'ai un petit souci pour regrouper des numeros

    Voila, j'ai par exemple sur les colonnes A et B:
    A-B et je dois obtenir C-D
    2-0 3-0
    2-0 0-2
    2-0 1-0
    0-1 1-0
    0-1 0-2
    4-0
    5-0
    0-1
    0-1
    En fait le principe est de regrouper les valeurs de la colonne A, par exemple trois "2" me donnent 3 -> 0 sur D (il ne peut pas y avoir de 0-0 ou 2-1 par exemple, que ce soit pour les vecteurs A-B ET C-D)
    Puis deux "1" sur B me donne 0-2

    Je sais que ça a l'air simple

    Mais après, si par exemple on a "4" puis "5" sur A on devra avoir 1-0 puis 1-0 sur C-D, en fait il faut prendre en compte les changements.

    Merci d'avance pour votre aide,

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,

    regardes ce fichier joint, (si j'ai compris)

    a +
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    Salut,

    Je te remercie pour ton aide, car j'arrête pas de me cogner la tête sur ce problème;
    Ca c'est que j'ai trouvé dans fichier (Col. A B C D)
    2 0 3 0
    2 0 3 0
    2 0 3 0
    0 1 0 4
    0 1 0 4
    4 0 1 0
    5 0 1 0
    0 1 0 4
    0 1 0 4

    Le truc c'est de compter les nombre, ainsi pour A les trois 2 doivent donner 3 sur la première ligne de C mais après c'est 0 qui doit apparaitre sur la deuxième ligne de C.

    Par contre après il y a 4 et 5 sur A donc sur C il y a forcement, 1 et 1 et donc a coté 0 et 0 sur D,

    si plusieurs nombre sont similaires consécutivement sur A (ou B) alors il y a un 0 sur D (respectivment C).
    si les nombres changent sur A (ou B) il y aura autant de 0 sur D (repspectivement C).

    Voici en fichier joint une liste un peu plus longue pour montrer ce qui doit être obtenu en C et D.

    ++
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Avant de regarder ton fichier, je t'informe qu'une discussion a eu lieu, i n(y a pas tràs longtemps sur exactement le meme sujet

    je vais regarder ton fichier mais si tu parcoures le forum, tu retrouveras cette discussion

    a +
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    Je me disais bien que c'était pas si evident que ça...

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour,

    voici un petit code, mais qui ne donne pas tout à fait ce que tu cherches pour les changements de valeurs entre deux zéros.

    En clair, que doit être le résultat de la série suivante

    2 0 => 3 0
    2 0
    2 0
    0 1 => 0 2
    0 1
    4 0 => 1 0
    0 1
    4 0
    0 1
    4 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Public Sub GetSerie()
       Dim Derligne As Long 'Dernière ligne du tableau
       Dim CurCol As Long 'Colonne courante de lecture
       Dim CurLigne As Long 'Ligne courante de lecture
       Dim ResultLigne As Long 'Ligne courante de l'affichage
       Dim Compte As Long 'Nombre de valeurs équivalentes successives
       Dim CurValue As Long 'Dernière valeur lue
     
        Derligne = Me.Range("A1").End(xlDown).Row
        CurValue = 0 
        CurCol = 1 
        ResultLigne = 0
        Compte = 0
     
        For CurLigne = 1 To Derligne
    'Si la valeur de la cellule courante <> de l dernière valeur lue alors
            If Me.Cells(CurLigne, CurCol) <>CurValue Then
    'Si La cellule=0 alors Changer de colonne de lecture
                If Me.Cells(Curligne, Curcol)=0 then CurCol = CurCol - ((-1) ^ CurCol ) 
    'Conserver la valeur de la nouvelle cellule
                CurValue = Me.Cells(CurLigne, CurCol)
    'Réinitialiser le nombre d'équivalences successives
                Compte = 1
    'Passer à la ligne suivante d'affichage
                ResultLigne = ResultLigne + 1
            Else
    'Si pas de changements de série alors ajouter à la série
                    Compte = Compte + 1
            End If
    'Afficher le nombre d'équivalences successives dans la cellule d'affichage
            Me.Cells(ResultLigne, CurCol + 2) = Compte
    'Afficher 0 dans l'autre cellule d'affichage
            Me.Cells(ResultLigne, CurCol + 2 - ((-1) ^ CurCol )) = 0
        Next
    End sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. {Macro Excel} Probleme de Programmation
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 01/06/2007, 13h51
  2. Probleme lancement macro excel 2007
    Par nico63vb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/03/2007, 13h55
  3. Probleme de conversion entre . et , avec une macro excel
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/01/2007, 22h26
  4. [vba-e] probleme de declenchement de macro excel
    Par clarkk dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/07/2006, 19h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo