Excel Erreur VBA Range objet global 1004

Résolu
PC74cook32 Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   -  
PC74cook32 Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   -
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



A voir également:

2 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

x = Range("E" & Range("E" & Rows.Count).End(xlUp).Row).Value
1
PC74cook32 Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   35
 
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 336 Date d'inscription   Statut Membre Dernière intervention   35
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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 336 Date d'inscription   Statut Membre Dernière intervention   35 > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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 336 Date d'inscription   Statut Membre Dernière intervention   35 > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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