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 :

Fusionner 2 lignes ou plus en une seule en se basant sur une condition sur les dates. [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut Fusionner 2 lignes ou plus en une seule en se basant sur une condition sur les dates.
    Bonjour ,

    SVP j'ai besoin de votre aide car je n'ai pas grandes connaissances en VB.

    Mon on problème est le suivant : soient deux lignes excel suivantes

    A B C D E F G H
    2018 000 1000036 01012018 31012018 20 01/01/2018 31/01/2018
    2018 000 1000036 01022018 31122018 20 01/02/2018 31/12/2018

    Je souhaite fusionner ces deux lignes en 1 seule car mes conditions sont vérifiées :
    - G2 = H1 + 1 jour (date de début en 2 ème ligne colonne 7= date de fin en 1ère ligne à la colonne 8 +1 ) (01/02/2018 = 31/01/2018 +1)
    - A1=A2
    - B1=B2
    - C1=C2
    - D1=D2
    - E1=E2
    - F1=F2
    - G1=G2
    - H1=H2


    La ligne attendue est la suivante avec suppression des 2 lignes fusionnées , je ne laisse que la ligne résultat de la fusion :
    2018 000 1000036 01012018 31012018 20 01/01/2018 31/12/2018

    Pourriez vous m'aider ?

    Merci

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

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Pas claire votre demande, les conditions qui doivent être réunies
    - G2 = H1 + 1 jour (date de début en 2ème ligne colonne 7= date de fin en 1ère ligne à la colonne 8 +1 ) (01/02/2018 = 31/01/2018 +1)
    - A1=A2
    - B1=B2
    - C1=C2
    - D1=D2
    - E1=E2
    - F1=F2
    - G1=G2
    - H1=H2
    et le résultat attendu
    2018 000 1000036 01012018 31012018 20 01/01/2018 31/12/2018

    or dans votre exemple
    D1<>D2
    E1<>E2

    Que doit-on comparer exactement et qu'est-ce qui doit être retenu?

    Cdlt

  3. #3
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut
    Bonjour ,

    Vous avez raison , il ne faut pas tenir compte de la condition suivante et ne pas considérer les colonnes D et E :
    D1<>D2
    E1<>E2

    En gros, si :
    A1=A2
    B1=B2
    C1=C2
    F1=F2
    et
    G2 = H1 + 1 jour (date de début en 2ème ligne colonne 7= date de fin en 1ère ligne à la colonne 8 +1 ) (01/02/2018 = 31/01/2018 +1)

    On fusionne les 2 lignes en 1 seule ligne ( les colonnes D et E peuvent être vides) :

    2018 000 1000036 vide vide 20 01/01/2018 31/12/2018

    Merci

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

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Voilà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Fusion()
        Application.ScreenUpdating = False
        DerLig = [A10000].End(xlUp).Row
     
        For i = DerLig - 1 To 2 Step -1
            If Cells(i, "A") = Cells(i + 1, "A") And Cells(i, "B") = Cells(i + 1, "B") And Cells(i, "C") = Cells(i + 1, "C") And _
                Cells(i, "F") = Cells(i + 1, "F") And Cells(i + 1, "G") = Cells(i, "H") + 1 Then
                Cells(i, "H") = Cells(i + 1, "H")
                Range(Cells(i, "D"), Cells(i, "E")).ClearContents
                Range(Cells(i + 1, "A"), Cells(i + 1, "H")).Delete
            End If
        Next i
    End Sub
    Avec le fichier
    Pièce jointe 447059

    Cdlt

  5. #5
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut
    Merci pour ce code,

    Sauf que en l'exécutant j'ai l'erreur de type "13" incompatibilité de type.

    Désolé mais je suis vraiment profane en VB excel

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

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    montrez-moi un échantillon de vos données

  7. #7
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut
    Il s'agit de signaler que mes colonne G et H sont de format Date , mais sur lesquelles j'ai appliquées une formule pour obtenir cette date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CONCATENER(GAUCHE(D2;2);"/";DROITE((GAUCHE(D2;4));2);"/";DROITE(D2;4))
    C'est à dire en partant de la colonne E (non utilisée ) :
    01012018 ==> sera une date 01/01/2018 (format de cette dernière est DATE)

    serait-ce à cause de ça?

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

Discussions similaires

  1. Fusionner plusieurs lignes d'enregistrement d'une table
    Par Maegane dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 24/05/2013, 09h05
  2. Réponses: 1
    Dernier message: 23/04/2012, 11h57
  3. Calcul du nombre de lignes en fonction d'une condition
    Par didier roustand dans le forum Débutez
    Réponses: 7
    Dernier message: 27/01/2010, 18h32
  4. Réponses: 7
    Dernier message: 03/09/2009, 14h27
  5. Fusionner deux images, en fonction d'une condition
    Par Him dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/01/2007, 13h07

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