Excel Erreur VBA Range objet global 1004

Résolu/Fermé
PC74cook32 Messages postés 332 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 25 avril 2019 - 22 mars 2018 à 07:47
PC74cook32 Messages postés 332 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 25 avril 2019 - 26 mars 2018 à 08:59
Bonjour,

j'ai une macro sur excel qui vérifie de la ligne E2 à E1400 si un numéro de téléphone contient les préfixes :
-Téléphone *
-Téléphone
-Mobile *
-Mobile
et les supprime. Mais j'obtient l'erreur 1004, la méthode range de l'objet global a échoué.
J'ai essayé de réduire le nombre de cellules mais cela ne marche pas mieux. L'erreur est sur la ligne
x = Range("e2:e1400" & Range("e65536").End(xlUp).Row).Value


Voici le code, et merci.


Sub SuprrTel()
Sheets("Liste").Select
Dim x As Variant, r As Long, c As Long
Application.ScreenUpdating = False
x = Range("e2:e1400" & Range("e65536").End(xlUp).Row).Value
For r = 1 To UBound(x, 1)
For c = 1 To UBound(x, 2)
x(r, c) = Replace(x(r, c), "Téléphone *", "")
x(r, c) = Replace(x(r, c), "Téléphone ", "")
x(r, c) = Replace(x(r, c), "Mobile *", "")
x(r, c) = Replace(x(r, c), "Mobile ", "")
Next c: Next r
Range("e2:e1400" & Range("e65536").End(xlUp).Row).Value = x

End Sub



2 réponses

f894009 Messages postés 16748 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2022 1 660
22 mars 2018 à 07:59
Bonjour,

x = Range("E" & Range("E" & Rows.Count).End(xlUp).Row).Value
1
PC74cook32 Messages postés 332 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 25 avril 2019 35
22 mars 2018 à 08:32
Petit Ajout : sur un tableau, avec la même macro, mais avec moins de ligne remplies (700) et les mêmes paramètres (range de e2 à e800) ca marche. Sur le tableau concerné, avec les 1400 lignes remplies, si je copie la macro avec les mêmes paramètres (e2:e800), erreur de range..
0
PC74cook32 Messages postés 332 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 25 avril 2019 35
22 mars 2018 à 08:19
Re bonjour,

Je n'ai plus l'erreur 1004 mais j'ai obtiens l'erreur d'exécution 13 : incompatibilité de type
sur la ligne
     For r = 1 To UBound(X, 1)


0
f894009 Messages postés 16748 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2022 1 660
Modifié le 22 mars 2018 à 12:26
Re,

For r = 1 To UBound(X, 1)

X n'est pas un tableau, c'est la valeur de la derniere cellule colonne E !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Que voulez vous en fin de compte
0
PC74cook32 Messages postés 332 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 25 avril 2019 35 > f894009 Messages postés 16748 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2022
22 mars 2018 à 12:54
Re,
J'aimerais (comme le macro le faisait avant le bug) que la macro vérifie chaque cellule de la colonne E (E1, E2, E3...) et si il y a *Téléphone *", "Téléphone ", "Mobile *" ou "Mobile", que la macro les remplace par rien, c-a-d " ", donc les supprimer.
Quand le nombre de cellules remplies étaient proches de 700, cela marchait mais quand le nombre est passé a 1400, même sans changer la macro, j'obtenais l'erreur 1004.
0
f894009 Messages postés 16748 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2022 1 660
22 mars 2018 à 13:21
Re,

Si les cellules contiennent seulement le texte cite,

Sub SuprrTel()
    Dim x As Variant, r As Long, c As Long
    
    'Application.ScreenUpdating = False
    With Sheets("Liste")
        derlig = .Range("E" & Rows.Count).End(xlUp).Row
        For r = 2 To derlig
            If .Range("E" & r) Like "Téléphone*" Then
                .Range("E" & r) = ""
            ElseIf .Range("E" & r) Like "Mobile*" Then
                .Range("E" & r) = ""
            End If
        Next r
    End With
End Sub
0
PC74cook32 Messages postés 332 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 25 avril 2019 35 > f894009 Messages postés 16748 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2022
22 mars 2018 à 14:15
Hélas, j'aurais du préciser, elles contiennent en plus un numéro de téléphone
Du genre : "Téléphone *022 000 000"
Au pire, ce que je fais, c'est que je copie les numéros que je veux corriger, je les colle dans mon fichier qui fonctionne (j'en prends 600 d'un coup), je corrige et je recolle dans le fichier qui fait défaut.. Ca ne corrige pas le bug mais au moins, ça ne me bloque pas..
0
f894009 Messages postés 16748 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2022 1 660
Modifié le 22 mars 2018 à 14:42
Re,

ceci devrait aller

Sub SuprrTel()
    Dim x As Variant, r As Range
    
    Application.ScreenUpdating = False
    With Sheets("Liste")
        Set x = .Range("E2:E" & .Range("E" & Rows.Count).End(xlUp).Row)
        For Each r In x
            If r Like "Téléphone*" Or r Like "Mobile*" Then
                r = Replace(r, "Téléphone *", "")
                r = Replace(r, "Téléphone ", "")
                r = Replace(r, "Mobile *", "")
                r = Replace(r, "Mobile ", "")
            End If
        Next r
    End With
    Application.ScreenUpdating = True
End Sub
0