Comparaison de deux feuilles excel [Résolu]

Signaler
Messages postés
24
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
5 novembre 2016
-
Messages postés
24
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
5 novembre 2016
-
Bonjour, voici un code qui consiste à faire une comparaison entre deux feuilles sous excel
Lorsque j'ai executé il y a un message d'erreur que je n'arrive pas à résoudre
le message "Erreur d'éxecution 9 l'indice n'appartient pas à la sélection"
et voici le code


Option Explicit
'compare data
Sub comparedata()
Dim rng0 As Range
Dim rng1 As Range
Dim rng2 As Range
Dim RowNo As Long
Dim liste() As Integer
Dim i As Integer
Dim c As Range

Set rng0 = Worksheets("Feuil2").Range("A1", Worksheets("Feuil2").Range("A" & Rows.Count).End(xlUp))
Set rng1 = Worksheets("Feuil2").Range("B1", Worksheets("Feuil2").Range("A" & Rows.Count).End(xlUp))
Set rng2 = Worksheets("Feuil3").Range("E2", Worksheets("Feuil3").Range("A" & Rows.Count).End(xlUp))
For Each c In rng1
Module1.HH
If Application.WorksheetFunction.CountIf(rng2, c) > 0 Then
ReDim Preserve liste(UBound(liste) + 1)
liste(UBound(liste)) = c.Row
Else
If Application.WorksheetFunction.CountIf(rng0, c) Then
End If
End If
Next c

For i = UBound(liste) To 1 Step -1
Worksheets("Feuil2").Activate
Worksheets("Feuil2").Range(Cells(liste(i), 1), Cells(liste(i), 100)).Delete
Next
End Sub

RODIALSON Tojo

6 réponses

Messages postés
29903
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
338
Bonjour,



Il faut pré-dimensionner ta liste en utilisant
 ReDim liste(0)

Sinon... UBound(liste) ... ne peut pas fonctionner puisqu'il n'y a aucune "taille" dans ton tableau...


Ce qui donne :


'compare data
Sub comparedata()
Dim rng0 As Range
Dim rng1 As Range
Dim rng2 As Range
Dim RowNo As Long
Dim liste() As Integer
Dim i As Integer
Dim c As Range
 ReDim liste(0)
 
Set rng0 = Worksheets("Feuil2").Range("A1", Worksheets("Feuil2").Range("A" & Rows.Count).End(xlUp))
Set rng1 = Worksheets("Feuil2").Range("B1", Worksheets("Feuil2").Range("A" & Rows.Count).End(xlUp))
Set rng2 = Worksheets("Feuil3").Range("E2", Worksheets("Feuil3").Range("A" & Rows.Count).End(xlUp))
    For Each c In rng1
   
       If Application.WorksheetFunction.CountIf(rng2, c) > 0 Then
            ReDim Preserve liste(0 To (UBound(liste) + 1))
            liste(UBound(liste)) = c.Row
        Else
            If Application.WorksheetFunction.CountIf(rng0, c) Then
            End If
        End If
    Next c
    
    For i = UBound(liste) To 1 Step -1
        Worksheets("Feuil2").Activate
        Worksheets("Feuil2").Range(Cells(liste(i), 1), Cells(liste(i), 100)).Delete
    Next
End Sub



Messages postés
14936
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 octobre 2020
447
Bonjour,
Message modifié pour ajouter les balises de code.
Voir ici comment utiliser la coloration syntaxique.
Messages postés
24
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
5 novembre 2016

merci pour le conseil
mais le problème est sur cette ligne ReDim Preserve liste(UBound(liste) + 1)
peut tu m'aider?
Messages postés
24
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
5 novembre 2016

merci pour votre aide ça à résolu l'affaire
et j'aimerais intégrer ce code pour faire un parcours de chaque caractère et supprimer les caractères trouvées dans la feuille2, la feuille3 c'est pour la recherche et la feuille2 le résultat donc si on trouve dans la feuille2 on le supprime
la feuille c'est le boutton

Dim Var As String, i As Integer, S As String
Var = "Parcourir la variable"
For i = 1 To Len(Var)
S = Mid(Var, i, 1) ' ici tu as les caractères qui défile
Next i

RODIALSON Tojo
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Bonjour,
je vois une question posée, un problème résolu et un nouveau problème posé.
Conformément à la règle de ce forum, cette discussion devrait être libérée (un clic sur le tag RESOLU) et une nouvelle discussion devrait être ouverte.
L'observation de cette règle est nécessaire au bon fonctionnement de ce forum.
Merci de bien vouloir l'observer.

Messages postés
24
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
5 novembre 2016

merci mais c'est résolu