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

Excel Discussion :

passage a une autre ligne [XL-2013]


Sujet :

Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 4
    Points
    4
    Par défaut passage a une autre ligne
    Bonjour tout le monde,

    Je suis débutante en vba , et j'ai besoin de votre aide s'il vous plait .

    J'ai cette macro qui permet de grouper les différents données pour deux mémés cellules qui se répètent sur plusieurs lignes.

    Mon problème c'est que il regroupe les données seulement pour 2 lignes mais pas plus , je voudrai qui'il regroupe les données sur une mémé ligne qui ont les mémés cellule B et C qui se répètent sur plusieurs lignes .

    J'arrive pas a trouver le pb dans mon code qui execute seulement pour 2 lignes .

    Merci d'avance.





    'code VBA


    Function inserer(FL2 As Worksheet, lig As Integer, col As Integer)



    If (FL2.Cells(lig, 20) <> "") Then
    FL2.Cells(col, 19) = FL2.Cells(lig, 19)
    FL2.Cells(col, 20) = FL2.Cells(lig, 20)
    FL2.Cells(col, 21) = FL2.Cells(lig, 21)
    FL2.Cells(col, 22) = FL2.Cells(lig, 22)



    ElseIf (FL2.Cells(lig, 26) <> "") Then
    FL2.Cells(col, 25) = FL2.Cells(lig, 25)
    FL2.Cells(col, 26) = FL2.Cells(lig, 26)
    FL2.Cells(col, 27) = FL2.Cells(lig, 27)



    ElseIf (FL2.Cells(lig, 31) <> "") Then

    FL2.Cells(col, 30) = FL2.Cells(lig, 30)
    FL2.Cells(col, 31) = FL2.Cells(lig, 31)
    FL2.Cells(col, 32) = FL2.Cells(lig, 32)


    ElseIf (FL2.Cells(lig, 37) <> "") Then

    FL2.Cells(col, 36) = FL2.Cells(lig, 36)
    FL2.Cells(col, 37) = FL2.Cells(lig, 37)
    FL2.Cells(col, 38) = FL2.Cells(lig, 38)

    ElseIf (FL2.Cells(lig, 42) <> "") Then

    FL2.Cells(col, 41) = FL2.Cells(lig, 41)
    FL2.Cells(col, 42) = FL2.Cells(lig, 42)
    FL2.Cells(col, 43) = FL2.Cells(lig, 43)


    End If

    End Function

    Sub grouper()
    Dim FL2 As Worksheet, i As Integer, j As Integer, h As String, lig As Integer, col As Integer
    Set FL2 = Worksheets(4)

    For i = 10 To 50
    For j = 9 To i - 1
    If ((FL2.Cells(i, 2) Like FL2.Cells(j, 2)) And (FL2.Cells(i, 3) Like FL2.Cells(j, 3)) And (FL2.Cells(i, 4) Like FL2.Cells(j, 4)) And (FL2.Cells(i, 5) Like FL2.Cells(j, 5))) Then
    col = j
    lig = i
    h = inserer(FL2, lig, col)
    Rows(i).Delete
    End If
    Next j
    Next i
    End Sub

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Je suis le 34è lecteur de ce point, et comme les 33 autres, je ne peux pas répondre car l'histoire des mémés n'est tout simplement pas claire !

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,
    Je n'ai pas tout bien compris, mais bon je me lance.
    Je pense qu'il faut partir de la ligne 50 et remonter jusqu'à la 10ème. De plus, toujours d'après ce que j'ai cru comprendre, la variable j = i -1 donc on peut remplacer j par i -1, on évite ainsi une deuxième boucle, ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub grouper()
        Application.ScreenUpdating = False
        Dim FL2 As Worksheet, i As Integer, j As Integer, h As String, lig As Integer, col As Integer
        Set FL2 = Worksheets(4)
        For i = 50 To 10 Step -1
            If ((FL2.Cells(i, 2) = FL2.Cells(i - 1, 2)) And (FL2.Cells(i, 3) = FL2.Cells(i - 1, 3)) And (FL2.Cells(i, 4) = FL2.Cells(i - 1, 4)) And (FL2.Cells(i, 5) = FL2.Cells(i - 1, 5))) Then
                col = i - 1
                lig = i
                h = inserer(FL2, lig, col)
                Rows(i).Delete
            End If
        Next i
    End Sub
    A tester
    Cdlt

  4. #4
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous,

    Perso je n'aurais déclarer lig et i (variables de comptage de ligne) en integer.

    Rappel : Integer permet de déclarer une valeur comprise entre -32 768 et 32 767 ce qui ne permet pas d'aller jusqu'à la dernière ligne d'une feuille d'un classeur.

    Donc moi pour éviter ce petit soucis je déclare toujours en long mais si tu veux gérer que 50 lignes ou colonnes tu peux tous les déclarer en byte (0 à 255)
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  5. #5
    Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour ,

    Merci pour votre réponse et votre aide .

    En effet , j'ai testé votre macro mais ça fusionne mais il supprime les autres contenus .

    j'explique mieux mon problème :
    '
    J'ai un tableau de données et je voudrai parcourir mon tableau, si j'ai une répétition (2 ou plus) sur la cellule A et B de chaque ligne ,j'aimerai renvoyer les données de tous le lignes qui se répètent sur une seule ligne ou il y' a les champs vides ,

    ' pour mon code ça fonctionne seulement si les lignes qui se répètent sont éparpillées dans le fichier .mais si ils sont en bloc ça fusionne pas .

    je vous joindre un fichier pour expliquer mieux mon souci .

    Dans l'attente de votre aide .Je vous remercie d'avance .
    macro grouper.xlsm

  6. #6
    Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Merci tout d'abord pour votre réactivité !! On progresse en effet.
    Je me rends compte que ma demande n'est pas très explicite et qu'il ne doit en effet pas être facile de décoder ma demande (mais elle est claire dans ma tête )

    Pour commencer, mon tableau est alimenté par un autre tableau. Ses valeurs ne sont pas saisies mais importés d'un autre tableau. Il y a ainsi de nombreuses lignes

    Il s'agit ensuite de regrouper les lignes qui ont des valeurs identiques en colonnes B+C+D+E
    Regroupement sur une seule ligne des contenus des colonnes B+C+D+E qui sont identiques
    Regroupement sur une seule ligne des contenus des colonnes S à AR en fusionnant les contenus s'ils sont dans la même colonne

    Ma démarche a été de faire une boucle et de faire un test sur les contenus des colonnes B+C+E+D. Si ces contenues sont identiques, je recopie les valeurs dans les lignes du dessus puis j'efface la ligne en cours.

    Je pense en effet que ta proposition de code est proche de ce que je souhaite faire mais il y a un problème au niveau de la suppression de ligne : le regroupement s'effectue mais les lignes non regroupables sont supprimées.
    Je te joins un nouveau fichier exemple pour t'illustrer ce que je cherche à faire :

    Des lignes 9 à 21, une idées de lignes telle qu'on pourrait les avoir importées

    Des lignes 30 à 35, les lignes telles qu'on voudrait les avoir regroupées.


    J’espère cette fois -ci ,j'ai bien expliquée le problème.

    Je vous remercie énormément pour votre aide .


    Pièces jointes:
    fichier exemple grouper.xlsm

  7. #7
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,
    Essayez ceci
    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
    Sub grouper()
        Application.ScreenUpdating = False
        Dim FL2 As Worksheet, i As Integer, j As Integer, h As String, FromLigne As Integer, ToLigne As Integer
        Set FL2 = Sheets("Recap")
        DerLig = FL2.Range("B" & FL2.Rows.Count).End(xlUp).Row
        Range("A9:A" & DerLig).ClearContents
        Range("A9:A" & DerLig).FormulaR1C1 = "=RC[1]&""-""&RC[2]&""-""&RC[3]&""-""&RC[4]"
        Range("A9:A" & DerLig).Value = Range("A9:A" & DerLig).Value
     
        For i = 9 To DerLig
            Valeur = Cells(i, "A")
            If Valeur = "ZZ" Then GoTo Suivant
            With FL2.Range("A" & i & ":A" & DerLig)
                Set x = .Find(Valeur, LookIn:=xlValues)
                If x.Row = i Then GoTo Suivant
                If Not x Is Nothing Then
                        PosDep = x.Address
                    Do
                        For c = 19 To 44
                            If Cells(x.Row, c) <> "" Then Cells(i, c) = Cells(i, c) & Chr(10) & Cells(x.Row, c)
                        Next c
                        Cells(x.Row, "A") = "ZZ"
                        Set x = .FindNext(x)
                   Loop While Not x Is Nothing And x.Address <> "$A$" & i
                End If
            End With
    Suivant:
        Next i
     
     
        For i = DerLig To 9 Step -1
            If Cells(i, "A") = "ZZ" Then Cells(i, "A").EntireRow.Delete
        Next i
        Range("A9:A" & DerLig).ClearContents
    End Sub
    Attention, supprimez l'espace en trop sur le nom de votre feuille "RECAP ".
    Cdlt

  8. #8
    Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour ,

    Merci pour votre aide .

    9a fonctionne trés bien

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

Discussions similaires

  1. mon dessin disparait lors de passage a une autre fenetre
    Par tifawete dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/07/2008, 12h58
  2. Associer une autre ligne si jointure manquante
    Par GoustiFruit dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/03/2008, 10h39
  3. Réponses: 2
    Dernier message: 26/12/2007, 10h00
  4. Additionner enregistrement avec une autre ligne
    Par aurelie83 dans le forum SQL
    Réponses: 2
    Dernier message: 03/09/2007, 10h06
  5. [VBA-E]Effacer ligne si une autre ligne est identique
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/08/2006, 13h41

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