Comparaison de deux feuilles excel

Résolu
tjrod Messages postés 24 Date d'inscription jeudi 20 décembre 2012 Statut Membre Dernière intervention 5 novembre 2016 - Modifié par tjrod le 1/10/2014 à 14:11
tjrod Messages postés 24 Date d'inscription jeudi 20 décembre 2012 Statut Membre Dernière intervention 5 novembre 2016 - 2 oct. 2014 à 08:55
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

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
1 oct. 2014 à 14:37
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



1
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
1 oct. 2014 à 13:52
Bonjour,
Message modifié pour ajouter les balises de code.
Voir ici comment utiliser la coloration syntaxique.
0
tjrod Messages postés 24 Date d'inscription jeudi 20 décembre 2012 Statut Membre Dernière intervention 5 novembre 2016
1 oct. 2014 à 14:13
merci pour le conseil
mais le problème est sur cette ligne ReDim Preserve liste(UBound(liste) + 1)
peut tu m'aider?
0
tjrod Messages postés 24 Date d'inscription jeudi 20 décembre 2012 Statut Membre Dernière intervention 5 novembre 2016
Modifié par tjrod le 1/10/2014 à 14:53
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 oct. 2014 à 15:11
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.

0
tjrod Messages postés 24 Date d'inscription jeudi 20 décembre 2012 Statut Membre Dernière intervention 5 novembre 2016
2 oct. 2014 à 08:55
merci mais c'est résolu
0
Rejoignez-nous