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 :

"concatener" un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 81
    Par défaut "concatener" un tableau
    bonjour

    voila j'ai un autre petit soucis concernant un tableau de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    designation          quantité
    itemA	                   1
    itemA                      1
    itemA                      1
    itemB                      1
    itemB                      1
    itemC                      2
    itemD                      1
    itemD                      1
    itemD                      3
    itemD                      2
    je voudrais trier ce tableau en regroupant les items et additionner les quantités

    voici ce que jai pour l'instant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 0 To 2000
     If Range("C" & i).Text = Range("C" & i - 1).Text Then
     
                Rows(i).Select
                Selection.Delete Shift:=xlShiftUp
                Range("D" & i - 1).Value = Range("D" & i - 1).Value + 1
                End If
        Next
    ceci marche a ceci pres que au dela de 2 items identiques ca ne regroupe uniquement par deux et non globalement

    voila si qq voit comment faire
    merci davance
    @++

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Il vaut mieux commencer par la fin et remonter dans ta boucle (step -1). Cela t'évitera certainbs "croche-pieds" désagréables....

    Bonne continuation...

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 36
    Par défaut
    Autre idée :
    commencer par envoyer une comande de tri, puis une commande de sous-totaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    '
        'on commence par trier
        Range("A1:B11").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range( _
            "B2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
            :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
            DataOption2:=xlSortNormal
     
     
        'on regroupe et on ajoute les sous-totaux
        Range("A1").Subtotal GroupBy:=1, Function:=xlSum, _
                                     TotalList:=Array(2, 2), _
                                     Replace:=True, _
                                     PageBreaks:=False, _
                                     SummaryBelowData:=True
    @+

  4. #4
    Invité
    Invité(e)
    Dernière modification par AlainTech ; 15/09/2007 à 11h34. Motif: Correction URL

  5. #5
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Et les tableaux croisés dynamiques ?
    Enregistre la macro en réalisant le tableau.

    Non ?

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par jacques_jean Voir le message
    Bonjour,
    Je ne parvient pas à ouvrir l'URL que tu désigne, est-ce un problème de ma part ?
    Cordialement.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour Leforestier,

    J'ai dû faire une erreur sur celui-ci car le sujet a été posté sur le Forum Excel puis sur Vba Excel et sur le 1er il fonctionne bien.

    Je le remets ci-dessous :

    http://www.developpez.net/forums/sho...d.php?t=192445

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Excuse moi d'y revenir Jacque_Jean, mais l'URL m'envoie sur un Topic
    Supprimer des lignes en double dans une feuille Excel ?
    Est-ce le sujet ?
    Cordialement.
    EDIT:
    Hummmmm.
    Oui

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Citation Envoyé par zorrax Voir le message
    bonjour

    voila j'ai un autre petit soucis concernant un tableau de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    designation          quantité
    itemA                       1
    itemA                      1
    itemA                      1
    itemB                      1
    itemB                      1
    itemC                      2
    itemD                      1
    itemD                      1
    itemD                      3
    itemD                      2
    je voudrais trier ce tableau en regroupant les items et additionner les quantités

    voici ce que jai pour l'instant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 0 To 2000
     If Range("C" & i).Text = Range("C" & i - 1).Text Then
     
                Rows(i).Select
                Selection.Delete Shift:=xlShiftUp
                Range("D" & i - 1).Value = Range("D" & i - 1).Value + 1
                End If
        Next
    ceci marche a ceci pres que au dela de 2 items identiques ca ne regroupe uniquement par deux et non globalement

    voila si qq voit comment faire
    merci davance
    @++
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 2000 To 2 step-1
         If Range("C" & i) = Range("C" & i - 1) Then
              Range("D" & i - 1)= Range("D" & i - 1) + Range("D" & i )
              Rows(i).Delete
     End If
    Next
    2000 peut être remplacé par [C65536].end(xlup).row
    Pour i =2000 jusqu'à 2 en décrémentant (enlevant 1)
    si C(i)=C(i-1) alors
    D(i-1)=D(i-1)+D(i)
    on supprime la ligne I

    A+
    NB si quelqu'un pouvait m'expliquer l'ajout des balises "code" intempestives

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re Leforestier,

    En effet, mais le sujet concerne bien la suppression de doublons même si Zorrax a indiqué dans le titre "Concaténer ...." qui n'est pas le bon terme en l'occurence. En ce qui concerne l'addition des valeurs il ne s'agit que d'utilser une variable qui cumule les valeurs puis est affectée à la ligne restante puis réinitialisée.

    Mais je viens de voir la réponse de Gorfael qui doit bien fonctionner.

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Oui...
    Commencer par la fin et remonter est la meilleure manière d'éviter de s'égarer dans un boucle relative à des articles dont on supprime certains au passage, c'est évident ...

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour Gorfael,

    Zorrax a répondu sur le même sujet mais qui se trouve dans la catégorie "Excel" et non "VBA Excel".

    Je lui ai également répondu qu'il vienne voir votre code ici.

    En ce qui concerne les balises :

    1) vous avez sélectionnez votre 1ère ligne et cliqué sur l'outil "Code" ce qui donne :

    "[CODE]For i = 2000 To 2 step-1[/CODE]"

    ensuite vous avez fait la même chose avec :

    "[CODE] If Range("C" & i) = Range("C" & i - 1) Then
    Range("D" & i - 1)= Range("D" & i - 1) + Range("D" & i )
    Rows(i).Delete
    End If
    Next [/CODE]"

    lorsque vous vous en apercevez soit avant d'envoyer la réponse soit après mais en cliquant sur éditer, vous supprimez le 1er "[/CODE]" (balise de fin) après "step-1" puis le 2ème "[CODE]" (balise de début) avant "If Range".
    Dernière modification par AlainTech ; 17/09/2007 à 18h16. Motif: Ajout balises [noparse] pour affichage des balises [code]

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 81
    Par défaut
    effectivement concatener nest pas le bon terme mais je voyais pas koi mettre dautre lol
    merci a vous pour le coup de main

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut à tous
    Merci jacques_jean
    En ce qui concerne les balises :

    1) vous avez sélectionnez votre 1ère ligne et cliqué sur l'outil "Code" ce qui donne :

    "[code]For i = 2000 To 2 step-1[/code]"

    ensuite vous avez fait la même chose avec :

    "[code] If Range("C" & i) = Range("C" & i - 1) Then
    Range("D" & i - 1)= Range("D" & i - 1) + Range("D" & i )
    Rows(i).Delete
    End If
    Next [/code]"

    lorsque vous vous en apercevez soit avant d'envoyer la réponse soit après mais en cliquant sur éditer, vous supprimez le 1er "[/code]" (balise de fin) après "step-1" puis le 2ème "[code]" (balise de début) avant "If Range".
    Si j'ai posé ma question, c'est après la 4me réapparition d'une séquence [/code][code] intempestive.
    Les balises, je les tapes directement (bien fait, na !), et je ne comprends pas pourquoi, quelques fois, de nouvelle apparraissent pour séparer une liste en 2 ou 3.

    Je pense que ce doit être du à un caractère masqué, ou à une séquence qui est assimilée à une commande de début, mais ....
    Et comme ça ne se fait que de temps en temps, je n'ai pas la moindre idée du problème.
    Merci quand même, ne serait-ce que pour le "noparse" que je ne connaissai pas et qui devrait me permettre des A1:D1 plus lisibles que A11
    A+

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

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