Excel Erreur VBA Range objet global 1004

Résolu
PC74cook32 Messages postés 459 Statut Membre -  
PC74cook32 Messages postés 459 Statut Membre -
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




--
L'Intelligence est une montagne dont le sommet est souvent confondu avec la base.

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

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