[Debutant] Erreur 424

zenzolarticho Messages postés 12 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 24 juin 2008 - 23 juil. 2007 à 11:26
zenzolarticho Messages postés 12 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 24 juin 2008 - 24 juil. 2007 à 12:17
Bonjour a tous, voila je suis debutant en vba, et on m'a aidé a faire un code pour réaliser ce dont j'ai besoin:
Je dois comparer 2 champs qui ont des numéros en communs. Dans un premier tant je doit obtenir dans une troisiéme colonne les numéros de la colonne 1 qui ne sont pas déjà dans la colonne 2. 
dans une 4éme colonne il me faut ceux qui sont en commun dans les deux colonnes.
Donc voila le code que j'ai:

Sub test()
    first_row = UsedRange.Row
    last_row = UsedRange.Rows.Count + UsedRange.Row - 1
    n = first_row
    k = first_row
    For i = first_row To last_row
        If Range("A" & i) <> "" Then
            ' ne copier la valeur de la col1 dans la col3 une seule fois
            If Application.WorksheetFunction.CountIf(Range("C:C"), Range("A" & i)) = 0 Then
                ' seulement si la valeur de la col1 n'est pas dans la col2
                If Application.WorksheetFunction.CountIf(Range("B:B"), Range("A" & i)) = 0 Then
                    Range("C" & n) = Range("A" & i)
                    n = n + 1
                End If
            End If
        End If
       
        If Range("B" & i) <> "" Then
            ' ne copier la valeur de la col2 dans la col4 une seule fois
            If Application.WorksheetFunction.CountIf(Range("D:D"), Range("B" & i)) = 0 Then
                ' ne copier dans col4 que les valeurs de col2 avec occurence >1
                If Application.WorksheetFunction.CountIf(Range("B:B"), Range("B" & i)) > 1 Then
                    Range("D" & k) = Range("B" & i)
                    k = k + 1
                End If
            End If
        End If
    Next i
End Sub

J'ai donc cette erreur quand je l'execute:

Erreur d'execution '424'
Objet requis.
J'ai trouvé des explications dans l'aide comme : "Vous avez fait référence à une propriété ou une méthode d'objet, mais n'avez pas fourni de qualificateur d'objet correct"
 mais vu que je suis noob je ne comprend pas trop d'ou viens le probléme.

De plus je voudrait savoir si la deuxiéme partie du code va bien copier les éléments en commun entre la colonne A et B dans une 4 éme colonne? Car il est possible que je me soit pas bien fait comprendre aussi avec la personne qui m'a aidé vu que je suis vraiment débutant.

Merci d'avance si vous pouvez m'aider

11 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 juil. 2007 à 11:39
Salut,
Ce code est il utilisé depuis VB6 ou directement sous Excel? de plus sur quelle ligne as tu le rpoblème?

Cette erreur veint souvent du fait que un des objets nécessaire n'est pas ou plus instancié.

@+: Ju£i?n
Pensez: Réponse acceptée
0
zenzolarticho Messages postés 12 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 24 juin 2008
23 juil. 2007 à 11:55
J'utilise bien vba sous excel. Ensuite je ne sais pas ca ne m'affiche pas de ligne en particulier lors de l'erreur, a moins que je puisse le verifier autrement?
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 juil. 2007 à 11:59
Salut,
Théoriquement cela doit te marquer Debogage ou un truc du style lors du MsgBox de l'errezur.
Si tu appuies sur débogage cela devrait t'emmener sur la ligne qui pose problème.

@+: Ju£i?n
Pensez: Réponse acceptée
0
zenzolarticho Messages postés 12 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 24 juin 2008
23 juil. 2007 à 12:03
Sinon je pourrait utiliser un autre code qui fonctionne. Dans celui ci je met les 2 colonnes sur la meme ligne, et le code va me colorer les cellules qui ont un doublon en une certaine couleur, et les autres avec une autre couleur:

Sub DoublonOrNotDoublon()
Dim Collec As New Collection, Cell As Range, Plage As Range


On Error Resume Next
Set Plage = Application.InputBox("Plage à examiner", Type:=8)
If IsEmpty(Plage) Then Exit Sub


For Each Cell In Plage
If Cell.Value <> "" Then
Collec.Add Cell.Value, CStr(Cell.Value)
If Err <> 0 Then
Err.Clear
Cell.Interior.ColorIndex = 43
Else
Cell.Interior.ColorIndex = 6
End If
End If
Next Cell
End Sub


Donc je pense que je pourrais copier les doublons en remplacant :"Cell.Interior.ColorIndex = 43
"
par un truc du genre Cell.Copy / Cell.Paste mais je sais pas du tout comment declarer ca, par exemple si je veux que ca me copie dans la cellule Cn, avec n s'incrementant a chaque copie, ca pourrait marcher??
0

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

Posez votre question
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
23 juil. 2007 à 12:04
<est en pleurs> Ouh là, j'ai du relire 3 fois pour, je crois, réussir à comprendre.
Tu es débutant en VBA, tu veux donc absolument le faire en VBA pour apprendre ? Ou c'est un besoin parce que s'embêter avec tout ce code quand 2 formules EXCEL te donnent instantanément la réponse, c'est quand même dommage.

Molenn
0
zenzolarticho Messages postés 12 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 24 juin 2008
23 juil. 2007 à 12:11
lol oki, oui désolé en effet je suis débutant en vba et aussi sur excel puisque je commence mon 1 er stage. En fait j'ai déjà essayé avec des formules excel du genre
=SI(ESTERREUR(RECHERCHEV(B1;$A$1:$A$4900;1;FAUX));"";RECHERCHEV(B1;$A$1:$A$4900;1;FAUX))

a priori je pensais que ca fonctionnais mais je me suis rendu compte qu'il m avait oublié des numeros en commun en plus je me retrouvais avec des numeros de temps en temps avec entre des espaces de parfois 5000 lignes... donc aprés gt parti pour tester une maccro qui effacait les lignes vide, mais ca fonctionnait pas... Je suis donc retourner voir su cotés des maccros vba. Mais a priori je n'ai aucune obligation a part réussir a bien copier ceux que je veux dans ces 2 nouvelles colonnes sans qu'il n'y ai aucun oublie.
0
zenzolarticho Messages postés 12 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 24 juin 2008
23 juil. 2007 à 12:13
désolé pour les fautes d'orthographes :p
0
zenzolarticho Messages postés 12 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 24 juin 2008
23 juil. 2007 à 12:15
N'hesitez pas a me dire si je ne suis pas clair dans mes explications, c'est pas toujours facile de décrire les choses quand on débute :p
0
zenzolarticho Messages postés 12 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 24 juin 2008
24 juil. 2007 à 09:53
c'est bon j'ai resolu mon probléme :p
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 juil. 2007 à 09:55
Salut,
Et comment??
il serait intéressant et utile de partager (=> toujours dans un souci de partgae des connaissances).

@+: Ju£i?n
Pensez: Réponse acceptée
0
zenzolarticho Messages postés 12 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 24 juin 2008
24 juil. 2007 à 12:17
en fait je ne savais pas mais il y a une commande pour filtrer les doublons sous excel:
dans données>Filtrer>Filtre elaboré

il suffit de copier sans doublon, ainsi j ai enlevé deja les doublons de mes 2 champs, j'ai mis les deux champs sur une meme colonne et j'ai pu recuperer comme ca ma 1 ere liste avec les doublons effacés.

Ensuite j'ai utilisé ce code:
For Each Cell In Plage
If Cell.Value <> "" Then
Collec.Add Cell.Value, CStr(Cell.Value)
If Err <> 0 Then
Err.Clear
Cell.Interior.ColorIndex = 43
Else
Cell.Interior.ColorIndex = 6
End If
End If
Next Cell
End Sub
pour preciser dans le 2eme champs les MSISDN que j'avais supprimé. Et j'ai fait un petit compteur, qui compte les champs de couleur 43 pour donner le nombre de suppression.
Bon aprés c pas vraiment le probléme de l'erreur 424 que j'ai reglé puisque je n'ai pas réussis a utiliser ce code.

Mais de toute façon j'ai fait ce que je voulais meme si avec une macro ca aurait ete plus propre :D.
0
Rejoignez-nous