Fusion de cellule Excel

Omexcel -  
lermite222 Messages postés 9042 Statut Contributeur -
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

8 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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.
0
Omexcel
 
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
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Cette fois-ce, une macro qui répond à ta demande et qui peu être réutilisée pour réorganisation ultérieure.
https://www.cjoint.com/?hDlgL8FObL
A+
EDIT: ne fonctionne pas sur le site de Cjoint
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Omexcel
 
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
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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+
0
Omexcel
 
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
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour lermite,

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

cordialement
Michel
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Oups:
0