Création de boucle

Fermé
Pouims Messages postés 3 Date d'inscription mercredi 13 août 2014 Statut Membre Dernière intervention 14 août 2014 - 13 août 2014 à 10:24
Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 - 14 août 2014 à 10:47
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
A voir également:

3 réponses

Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 14
13 août 2014 à 11:02
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
0
Pouims Messages postés 3 Date d'inscription mercredi 13 août 2014 Statut Membre Dernière intervention 14 août 2014
13 août 2014 à 11:15
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
0
Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 14
Modifié par Iama le 13/08/2014 à 13:54
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..
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
13 août 2014 à 13:37
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
0
Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 14
13 août 2014 à 13:57
Bonjour et merci pijaku

Je me demandais, comme faire pour rendre plus clair les codes.
J'ai fait la modif
Alain
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
13 août 2014 à 14:01
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
0
Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 14
13 août 2014 à 14:04
Excuse pijaku

Mais IE8 = ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
13 août 2014 à 14:11
Pardon... Internet Explorer 8
0