XL 2010 Une boucle qui plante

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

J’ai 2 tableaux. L’un n’a aucune mise en forme, l’autre si.
Au moyen de 2 boucles intriquées, je voudrais que le 1er tableau prenne la même mise en forme que le second.

VB:
Sub Macro1()

    Dim nblgn1 As Byte, nblgn2 As Byte, plage1 As Range, plage2 As Range, cel1 As Range, cel2 As Range
  
    nblgn1 = Application.CountA([ListeItems2].Columns(1)) 'nombre de lignes non vides de la 1ère colonne du tableau "ListeItems2"
    Set plage1 = [ListeItems2].Columns(1).Resize(nblgn1)  'plage des lignes non vides de la 1ère colonne du tableau "LiteItems2"
    nblgn2 = Application.CountA([ListeItems3])            'nombre de lignes non vides du tableau "ListeItems3"
    Set plage2 = [ListeItems3].Resize(nblgn2)             'plage des lignes non vides du tableau "LiteItems3"
  
    Application.ScreenUpdating = False
    For Each cel2 In plage2
        For Each cel1 In plage1
            If cel1.Value = cel2.Value Then
                With cel1
                    .Interior.Color = cel2.Interior.Color
                    .Font.Color = cel2.Font.Color
                End With
                Exit For
            End If
        Next
    Next
    Application.ScreenUpdating = True
End Sub

Ça plante et je me demande bien pourquoi.
 

Pièces jointes

Bonsoir,

J'ai essayé comme ca :

VB:
Option Explicit

Sub Macro1()

    Dim nblgn1 As Byte, nblgn2 As Byte, plage1 As Range, plage2 As Range, cel1 As Range, cel2 As Range
    Dim nbrLgn As Integer, i As Integer
   
    nblgn1 = Application.CountA([ListeItems2].Columns(1)) 'nombre de lignes non vides de la 1ère colonne du tableau "ListeItems2"
    Set plage1 = [ListeItems2].Columns(1).Resize(nblgn1)  'plage des lignes non vides de la 1ère colonne du tableau "LiteItems2"
    nblgn2 = Application.CountA([ListeItems3])            'nombre de lignes non vides du tableau "ListeItems3"
    Set plage2 = [ListeItems3].Resize(nblgn2)             'plage des lignes non vides du tableau "LiteItems3"
   
    nbrLgn = plage1.Rows.Count
   
    Application.ScreenUpdating = False
    For i = 1 To nbrLgn
        If plage1.Rows(i).Value = plage2.Rows(i).Value Then
            With plage1.Rows(i)
                .Interior.Color = plage2.Rows(i).Interior.Color
                .Font.Color = plage2.Rows(i).Font.Color
            End With
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Je ne sais pas pourquoi la 1ere proposition plante
 
Bonsoir

Set plage1 = [ListeItems2].Columns(1).Resize(nblgn1) 'plage des lignes non vides de la 1ère colonne du tableau "LiteItems2"

Set plage1 = [ListeItems2].Resize(nblgn1, 2) 'plage des lignes non vides de la 1ère colonne du tableau "LiteItems2"

VB:
Sub Macro1()

    Dim nblgn1 As Byte, nblgn2 As Byte, plage1 As Range, plage2 As Range, cel1 As Range, cel2 As Range
 
    nblgn1 = Application.CountA([ListeItems2].Columns(1)) 'nombre de lignes non vides de la 1ère colonne du tableau "ListeItems2"
    Set plage1 = [ListeItems2].Resize(nblgn1, 2) 'plage des lignes non vides de la 1ère colonne du tableau "LiteItems2"
    nblgn2 = Application.CountA([ListeItems3])            'nombre de lignes non vides du tableau "ListeItems3"
    Set plage2 = [ListeItems3].Resize(nblgn2)             'plage des lignes non vides du tableau "LiteItems3"
 
    Application.ScreenUpdating = False
    For Each cel2 In plage2
        For Each cel1 In plage1
            If cel1.Value = cel2.Value Then
                With cel1
                    .Interior.Color = cel2.Interior.Color
                    .Font.Color = cel2.Font.Color
                End With
            ' Exit For ' Pas Besoin (car il y a une condition : If cel1.Value = cel2.Value Then)
            End If
        Next
    Next
    Application.ScreenUpdating = True
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
1 K
Réponses
8
Affichages
1 K
Réponses
0
Affichages
1 K
Retour