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 :

Selectionner Cellules - Les fusionner et passer aux suivantes [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Par défaut Selectionner Cellules - Les fusionner et passer aux suivantes
    Bon j'ai l'impression de partir dans un truc trop compliqué... ça peut marcher, mais vu que je m'acharne dessus, je dois manquer de lucidité, alors j'en profite pour voir si quelqu'un n'aurait pas une meilleure idée.

    J'ai une colonne comme ceci :

    Champ1
    Champ2
    Champ2
    Champ3
    Champ3
    Champ4
    Champ5
    Champ5
    Champ5
    Champ5
    .....
    Je veux fusionner les cases ayant un champ identique avec, si possible :
    le fait que cela marche si j'ajoute/change des champs, le fait que cela marche si la liste s'agrandit.

    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
    Sub Fusion()
     
    Dim ligne As Integer
    Dim blop As Integer
    Application.DisplayAlerts = False
     
    ligne = 12
     
     
    If Range("A" & ligne & "").Value <> Range("A" & ligne & "").Offset(-1).Value Then
    blop = ligne
    Do Until Range("A" & ligne & "").Value = Range("A" & ligne & "").Offset(-1).Value
    If Range("A" & ligne & "").Offset(1).Value = Range("A" & blop & "").Value Then
    Range(Range("A" & blop & ""), Range("A" & ligne & "").Offset(1)).Select
    With Selection
            .HorizontalAlignment = xlLeft
             .VerticalAlignment = xlCenter
             .WrapText = False
             .Orientation = 0
             .AddIndent = False
             .ShrinkToFit = True
             .MergeCells = True
    End With
    'blop = ligne + 1
    End If
    'Selection.Merge
    ligne = ligne + 1
    Loop
    End If
    Application.DisplayAlerts = True
     
    End Sub

    Voilà mon usine à gaz !

    Sauf qu'actuellement ça ne marche (un peu) que si je démarre au milieu de la colonne (ligne 12), si je commence à la ligne 6, ça ne fait rien (normal surement, car c'est un champ unique).
    Et si je tombe sur le Champ 5, cela ne me prend que 3 cases au lieu des 4 qui le contiennent.
    Ensuite j'ai du mal à passer aux cellules suivantes, une fois la fusion effectuée.

    Je vais mettre ça de côté un peu, le temps que ça retombe et que je retrouve un peu de lucidité déjà.

    Merci pour ceux qui auraient une idée.

    PS: j'ai déjà fait quelque chose du genre qui marchait mais c'était plus simple car il y avait des cases vides entre chaque champ différent, et je n'avais qu'à faire des xldown, sélectionner, fusionner. Là ça m'embête un peu plus.

  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
    Une proposition
    les données commencent en A1 jusqu'à Axx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sub MergeCells()
    dim i as long
    application.displayalerts = false
    for i = cells(rows.count, 1).end(xlup).row to 2 step -1
        if range("a" & i - 1).value = range("a" & i).value then range("a" & i - 1 & ":a" & i).aerge
    next i
    end sub
    les données de la colonne A doivent être triées bien sûr

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Par défaut
    La colonne a est effectivement triée, du coup ça semble marcher parfaitement... et ça semble bien plus simple que ce sur quoi je m'engageais... je n'utilise jamais les Rows.Count mais ça semble bien utile dans certains cas.

    Merci beaucoup mercatog!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  2. selectionner seulement les cellules ayant une valeurs numérique
    Par Julaxio dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/06/2011, 08h50
  3. Selectionner toutes les cellules
    Par smurf007 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/07/2009, 11h36
  4. Réponses: 23
    Dernier message: 01/08/2008, 13h35
  5. selectionner tous les champs sauf un ?
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/01/2005, 15h51

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