Fusion de cellule Excel

Bonjour,
J'ai un soucis avec Excel, je cherche sur Internet depuis une semaine j'ai essayé pleins d'astuces mais je ne trouve pas la solution à mon problème, je précise que je ne maitrise pas énormément Excel.

J'ai un classeur, dans une colonne il y des références et dans les autres colonnes des critères de compatibilité.
Dans ma première colonne il y a des doublons, mais ils sont rattachés à des critères de compatibilité différents.

j'aimerais ne garder qu'une seule référence et rassembler tous les critères sur la même ligne.

Voici un exemple:
  A          B         C      D      E
3100    Voiture
3100               Avion
3100                       moto 
3100                               Vélo


Donc dans mon tableau Excel je ne voudrais qu'une seule ligne "3100" avec toutes les information séparé à la suite.

Comment faire?

En vous remercient d'avance pour vos réponse

Cordialement

Omexcel
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,

    Petites précisions nécessaires:
    1: les ref sont elles regroupées ou non?
    2: combien il y a t'il de lignes au total ?
    3/ combien il y a t il de colonnes de critères ?
    4/ prévoit on une mise à jour; cad nouvelle ligne, ref existant ou non avec nouveau critère ou non?

    Michel
    1. Contributeur
      Bonjour,
      Avec une macro ?

      Sub FusionCellule()
      Dim DerLigne As Integer, i As Integer, RD As Range
      Dim e As Integer
      '------- Pas nécessaire si un seul classeur
          Workbooks("Classeur1").Activate
      '------------------------------------------
          Application.DisplayAlerts = False 
      '------------------------------------------
          Sheets("feuil1").Select
          DerLigne = Range("A65536").End(xlUp).Row
          For i = 1 To DerLigne
              If Range("A" & i).Value <> vbNullString Then
                  Set RD = Range("A" & i)
                  For e = i + 1 To DerLigne
                      If RD.Value <> Cells(e, 1).Value Then Exit For
                  Next e
                  If e - 1 > i Then  'Si une seule fois la valeur
                      Range("A" & i & ":A" & e - 1).Select
                      With Selection
                          .Merge
                          .HorizontalAlignment = xlCenter
                          .VerticalAlignment = xlCenter
                      End With
                      i = e - 1
                  End If
              End If
          Next i
          Application.DisplayAlerts = True
      End Sub

      Seulement adapter le nom du classeur et de la feuille..

      A+
      Edit: rassembler tous les critères sur la même ligne
      J'ai pas bien lu.
      Ma macro ne répond pas à ta demande.
      1. Bonjour,

        Merci pour vos réponses.

        Oui les références en colonnes sont déja regroupées.
        Il y a 611 lignes au total avec les doublons.
        il y 11 colonnes de critères.
        Il a une possibilité de mise à jour mais pas pour tout de suite.

        Cordialement
        1. Je vous remercie pou cette macro c'est exactement ce que je cherchais, il ne me reste qu'à l'adapter pour mon fichier.

          Il va falloir que j'aprenne les macros aussi. lol

          En tous cas merci beaucoup, vous m'avez sauvé d'une crise nerf. lol

          Bonne journée

          Bien cordialement

          Omexcel
          1. Contributeur
            Bonjour,

            une alternative

            https://www.cjoint.com/?hDmclCkmI6

            dont voici la macro;

            Sub aligner_criteres()
            Dim ligact As Long, fin As Long, nbre As Integer, ref As String
            Application.ScreenUpdating = False
            fin = Range("A65536").End(xlUp).Row + 1
            ligact = 2
            While ligact < fin
                ref = Cells(ligact, 1)
                nbre = Application.CountIf(Range("A:A"), ref)
                If nbre > 1 Then
                    For cptr = ligact + 1 To ligact + nbre - 1
                        colcrit = Cells(cptr, 13).End(xlToLeft).Column '13 correspond à la colonne M
                        Cells(ligact, colcrit) = Cells(cptr, colcrit)
                    Next
                    Rows(ligact + 1 & ":" & ligact + nbre - 1).Delete
                End If
            ligact = ligact + 1
            fin = Range("A65536").End(xlUp).Row + 1
            Wend
            
            End Sub


            tu peux ajouter une nouvelle ref avec de critères et relancer
            pour lancer: macro-macro- aligner_critères -executer. je n'ai pas mis de boutons car tu as dit que "on verrait + tard"

            cordialement
            Michel
            1. Contributeur
              Salut michel,
              Tu permet une petite critique ?
              Quand tu supprime les lignes au fur et à mesure tu va te trouver avec une quantité de lignes vides qui serront testées, bien sur, ca change rien mais Bon...
              D'où ma solution de les supprimés après.
              A+
          2. Merci à vous deux,

            Tout fonctionne parfaitement.

            Il ne me reste plus qu'à apprendre et comprendre "comment ça marche" c'est le cas de le dire. lol

            Bonne journée

            Cordialement
            1. Contributeur
              Bonjour lermite,

              je ne pense pas (?...) car avant "wend" je recalcule la dernière ligne

              cordialement
              Michel
              1. Contributeur
                Oups: