Création de boucle

Bonjour,

Je suis toute nouvelle dans ce monde magique de la programmation. Après avoir lu "VBA pour les nuls" je souhaite me lacer dans un petit programme... Mais bien plus difficile que prévu!!
Voici mon problème (je vais essayer d'être claire mais c'est pas mon fort!):
J'ai un tableau à quatre colonnes. Je souhaite fusionner les cellules:

*de A si elles sont identiques
*de B si elles sont identiques et que celles de A aussi (donc fusionnées)
*de C si elles sont identiques et que celles de A et B aussi (donc fusionnées)
*de D si elles sont identiques et que celles de A , B et C aussi (donc fusionnées)

Pour le moment j'arrive à comparer deux cellules définies et à les fusionner mais je n'arrive pas à le faire en boucle jusqu'à la fin de mon tableau...

Pouvez vous me donner quelques pistes?

Merci

3 réponses

  1. Bonjour Pouims

    Peux-tu nous poster ton code, c'est plus simple de voir ou tu bloque?

    PS: Quand tu dis " fusionner les cellules" et si tu parle du format des cellules: C'est pour m'a part un formatage que j'évite, car je trouve qu'il génère trop de problèmes. je lui préfère " centrer sur plusieurs colonnes

    cordialement
    1. Bonjour Iama,
      Voici mon "petit" code... il ne compare que deux cellules d'une seule colonne et les fusionne si besoin.


      Sub comparaison()
      Range("D2").Select
      Var = Worksheets("DU par Unité").Range("D2").Value
      Var1 = ActiveCell.Offset(1, 0).Value
      If Var = Var1 Then Range("D2", ActiveCell.Offset(1, 0)).merge Else: MsgBox "Pas Egal"
      End Sub

      Quand je parle de fusionner c'est pour rendre la lecture du document plus facile, la fusion se fait par colonne et non par ligne donc "centrer sur plusieurs colonnes ne fonctionne pas" et je ne sais pas faire autrement que fusionner sur les colonnes.

      merci
      1. Bonjour Pouims

        Voici un code, il ne traite qu'une colonne.
        tu pourras voir un exemple de boucle.

        En faire une autre boucle pour traiter plusieurs colonne.
        Mais les fusions ne se font que sur les lignes.

        Sub comparaisonb()
        Dim i As Long, y As Long
        Dim coL As Integer 'N° de colonne
        Dim derL As Long  'derniére ligne
        Dim vaR As Variant
        
        coL = 4
        Worksheets("DU par Unité").Activate
        derL = Rows.Count
        derL = Cells(derL, coL).End(xlUp).Row 'derniére ligne utilisée
        
        For i = 1 To derL
        vaR = Cells(i, coL).Value
          If vaR = Empty = False Then
              If vaR = Cells(i, coL).Offset(1, 0).Value Then
              
                  For y = i To derL
                  Cells(y, coL).Select ' test W
                    If vaR <> Cells(y, coL).Value Then Exit For
                  Next y
              
                'Range(Cells(i + 1, coL), Cells(i + 1, coL).Offset(y - i - 2, 0)).Select
                Range(Cells(i + 1, coL), Cells(i + 1, coL).Offset(y - i - 2, 0)) = Empty
                
                With Range(Cells(i, coL), Cells(i + 1, coL).Offset(y - i - 2, 0))
                 .Merge
                 .VerticalAlignment = xlCenter
                End With
              i = y - 1
              End If
          End If
        Next i
        
        End Sub

        cordialement
        Si tu as des questions..
        1. Modérateur
          Bonjour,

          Lorsque vous placez du code sur notre forum, merci d'utiliser les balises code à votre disposition.
          Le mode d'emploi (au cas ou) est ICI.

          Cordialement,
          Pijaku
        2. Bonjour et merci pijaku

          Je me demandais, comme faire pour rendre plus clair les codes.
          J'ai fait la modif
          Alain
        3. Modérateur
          Oui, merci.
          A savoir également : l'utilisation de la balise <code + langage> comporte actuellement un bug. Les utilisateurs de IE8 ne voient que la première ligne du code. Si tu rencontres ce cas, n'hésite pas à ajouter un commentaire avec ton code entre balises <code> simples.
          Bonne journée et bonne continuation
        4. Excuse pijaku

          Mais IE8 = ?
        5. Modérateur
          Pardon... Internet Explorer 8