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 :

Regrouper des données par article dans liste


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut Regrouper des données par article dans liste
    Bonjour à tous,

    désolé si le titre n'ai pas tres clair, je ne sais pas trop comment l'appeler.

    Depuis ma base mssql j’extraie une liste:

    société|Modele|    marque|    Version| Option 
    SOC1	78338	CHEVROLET	AVEO	clim
    SOC1	78338	CHEVROLET	AVEO	jante allume
    SOC1	78338	CHEVROLET	AVEO	garantie
    SOC1	78338	CHEVROLET	AVEO	gilet
    SOC1	78338	CHEVROLET	AVEO	peinture métallisée
    SOC1	78973	CHEVROLET	AVEO	clim
    SOC1	78973	CHEVROLET	AVEO	jante allume
    SOC1	78973	CHEVROLET	AVEO	garantie
    SOC1	78973	CHEVROLET	AVEO	gilet
    SOC1	78973	CHEVROLET	AVEO	peinture métallisée
    Comme dans mon exemple ci-dessus, les options d'une voiture prennent une ligne par option .

    Donc par exemple mon fichier extraction comporte 2500 ligne Alors qu'il n'y a que 500 voitures.
    Je voudrait qu'en VBA qu'il me rajoute tout les options correspondante a une voiture dans une cellule.

    Pour arriver a la fin avec :

    société|Modele|    marque|    Version| Option 
    SOC1	78338	CHEVROLET	AVEO	clim;jante allume ; 	garantie;
    SOC1	78973	CHEVROLET	AVEO	clim; ante allume; garantie; gilet; peinture métallisée
    Est-ce réalisable? Si oui comment?

    Merci d'avance pour votre aide

    guigui69

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Une proposition (teste l'égalité des colonnes A)
    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
    Dim LastLig As Long, i As Long
    Dim Ego As Boolean
    Dim j As Byte
     
    Application.ScreenUpdating = False
    With Sheets("Feuil1")                                                ' à adapter
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = LastLig To 2 Step -1
            Ego = True
            For j = 1 To 4
                If .Cells(i, j) <> .Cells(i - 1, j) Then
                    Ego = False
                    Exit For
                End If
            Next j
            If Ego Then
                .Range("E" & i - 1).Value = .Range("E" & i - 1).Value & "; " & .Range("E" & i).Value
                .Rows(i).Delete
            End If
        Next i
    End With
    Par contre, si la comparaison se fait seulement par rapport aux données de la colonne B, le code précédent est simplifié comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim LastLig As Long, i As Long
     
    Application.ScreenUpdating = False
    With Sheets("Feuil1")                                                ' à adapter
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = LastLig To 2 Step -1
            If .Range("B" & i) = .Range("B" & i - 1) Then
                .Range("E" & i - 1).Value = .Range("E" & i - 1).Value & "; " & .Range("E" & i).Value
                .Rows(i).Delete
            End If
        Next i
    End With

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Merci pour ta réponse.

    J’essaie de comprend ton script:

    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
    Dim LastLig As Long, i As Long
    Dim Ego As Boolean
    Dim j As Byte
     ==> Ci dessus on déclare les variable
    Application.ScreenUpdating = False ==> Ca je sais pas
    With Sheets("Feuil1")        ' ça signifie qu'on se place sur la feuille 1                                        ' à adapter
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row ==> On compte la derniere ligne c'est bien ca?
        For i = LastLig To 2 Step -1 O ==> On fait une boucle mais je comprend pas le -1
            Ego = True  
            For j = 1 To 4  ==> Une seconde boucle pour les colonnes ? de 1à4?
                If .Cells(i, j) <> .Cells(i - 1, j) Then
                    Ego = False
                    Exit For
                End If
            Next j
            If Ego Then
                .Range("E" & i - 1).Value = .Range("E" & i - 1).Value & "; " & .Range("E" & i).Value ==> Si EGO a true on se place sur la précédente cellule puis on ajoute le contenue de la cellule actuel .
                .Rows(i).Delete ==> puis on delete la ligne actuelle
            End If
        Next i
    End With
    Dit voir si mes explications sont correcte?

    Une autres questions: est-il possible de mettre ceci dans un scrip VBS car le but c'est que cela soit automatique.

    Car j'ai réaliser un script en vbs :
    http://www.developpez.net/forums/d10...t-fichier-csv/

    et je voudrait rajouter le bout de code vba (ton script) dedans pour traiter le fichier. Est-ce possible ?

    Merci d'avance pour ton aide


    guigui69

Discussions similaires

  1. [XL-2010] Afficher des données par rapport à une liste de mois
    Par Lepetitlezard51 dans le forum Excel
    Réponses: 5
    Dernier message: 05/12/2014, 23h36
  2. [XSLT] Regrouper des données par date
    Par sofuzion dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 19/02/2009, 11h07
  3. Réponses: 3
    Dernier message: 24/11/2008, 14h09
  4. Validation des données par liste
    Par Niagala dans le forum Excel
    Réponses: 4
    Dernier message: 10/11/2007, 10h11
  5. Regroupement des données par catégorie
    Par Niagala dans le forum Excel
    Réponses: 3
    Dernier message: 07/11/2007, 10h19

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