Comparaison de deux feuilles excel [Résolu]

Messages postés
24
Date d'inscription
jeudi 20 décembre 2012
Dernière intervention
5 novembre 2016
- 1 oct. 2014 à 13:39 - Dernière réponse :
Messages postés
24
Date d'inscription
jeudi 20 décembre 2012
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
23284
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2018
- 1 oct. 2014 à 14:37
1
Merci
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



Merci jordane45 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

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

Commenter la réponse de ucfoutu
Messages postés
24
Date d'inscription
jeudi 20 décembre 2012
Dernière intervention
5 novembre 2016
- 2 oct. 2014 à 08:55
0
Merci
merci mais c'est résolu
Commenter la réponse de tjrod

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.