IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VB-E] PB macro erreur d'execution


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Par défaut [VB-E] PB macro erreur d'execution
    Bonjour à tous

    Voila j'avais une macro qui fonctionnait que voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub remplacer() 
    For Each c In Range("E:E") 
    If c.Value <> "" Then 
    c.Value = Replace(c.Value, ",", ".") 
    c.Value = Replace(c.Value, " EA", "") 
    c.Value = Replace(c.Value, " M", "") 
    End If 
    Next c 
    Range("A:B").EntireColumn.Delete 
    Range("1:3").EntireRow.Delete 
    End Sub

    Je voudrais la modifier et rajouter cela en plus mais j'ai un problème
    j'ai une erreur d'execution 1004 qui me met une lgne en jaune

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub remplacer() 
    Dim str As String 
    str = ActiveWorkbook.Names("Div.").RefersTo --> LIGNE EN JAUNE ICI 
    ActiveWorkbook.Names("Div.").Delete 
    ActiveWorkbook.Names.Add "Div", str 
     
     
    For Each c In Range("E:E") 
    If c.Value <> "" Then 
    c.Value = Replace(c.Value, ",", ".") 
    c.Value = Replace(c.Value, " EA", "") 
    c.Value = Replace(c.Value, " M", "") 
    End If 
    Next c 
    Range("A:B").EntireColumn.Delete 
    Range("1:3").EntireRow.Delete 
     
     
    End Sub

    Pouvez vous m'aider ?


    Merci beaucoup


    A+

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut
    tu peux pas détaillé avec des mots!!
    explique nous ce que tu veux faire et obtenir!

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Il semble que tu veuilles remplacer Div. par Div
    Pourquoi ne pas utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Goto Reference:="Div."
    Tu supprimes le nom puis, comme tu es sur sur son adresse, tu le remplace par Div
    Avec RefersTo c'est plus élégant mais je ne l'utilise pas dans ce cas. Pour un seul remplacement, la différence de temps d'exécution n'est pas sensible.
    Ceci dit si bbil ou SilkyRoad ou AlainTech passent par là, tu auras ce que tu souhaites... alors patience

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Le code est correct.

    Par contre, s'il n'existe pas de plage nommée Div. dans le classeur, tu obtiens l'erreur 1004.

    Voici un code qui marchera à tous les coups:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      Dim str As String
      Dim oName As Object
      For Each oName In ActiveWorkbook.Names
        If oName.Name = "Div." Then
          str = oName.RefersTo
          MsgBox str
          oName.Delete
          ActiveWorkbook.Names.Add "Div", str
          Exit For
        End If
      Next oName
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre confirmé Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Par défaut
    Ok merci

    Je vais essayer ton code demain matin

    Je te redis et si c'est ok je clique sur résolu pas de prob !

    A+

  6. #6
    Membre confirmé Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Par défaut
    Bonjour

    Je viens d'essayer la macro et cela ne fonctionne toujours pas

    J'écris bien Div. dans ma feuille excel, je lance la macro et rien ne se passe

    Comment cela se fait-il ?

    Je joint la feuille excel avec la macro pouvez vous essayer chez vous et me dire si cela fonctionne car là je me demande si ce n'est pas chez moi que cela plante....

    Merci beaucoup

    A+
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par lolo_bob2
    ..J'écris bien Div. dans ma feuille excel, je lance la macro et rien ne se passe
    ...
    A+
    tu l'écris ou Div. ?

  8. #8
    Membre confirmé Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Par défaut
    Bonjour

    J'écris Div. n'importe où dans ma feuille excel (Feuil1) et je lance la macro je n'ai pas d'erreur mais rien ne se passe...

    Merci de votre aide

    A+

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et avec cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = ActiveWorkbook.Names("Div.").RefersTo
    tu cherche l'adresse du champ nommé Div. (Menu excel insertion Nom..)

  10. #10
    Membre confirmé Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Par défaut
    Bonjour à tous

    En fait j'ai un problème la macro que j'utilise me permet de mettre en forme mon classeur excel.
    Je fais des extractions SAP et le fichier est régulièrement écrasé du coup je ne peux pas nommé le champ Div. avec le menu insertion -> nom
    En fait je voudrais juste le remplacer quand ma macro est lancée le champ Div. arrive en D1
    Peut être que je peux utiliser la fonction replace qui me parait peut être plus simple mais je ne sais pas comment l'écrire en vb...

    Merci de votre aide

    A+

  11. #11
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    Citation Envoyé par lolo_bob2
    Peut être que je peux utiliser la fonction replace qui me parait peut être plus simple mais je ne sais pas comment l'écrire en vb...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objet.Replace "ce_que_tu_veux_remplacer", "ce_par_quoi_tu_veux_remplacer"
    objet peut être une Range

    ca donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Replace "toto","titi"
    ce code remplace la chaine "toto" par la chaine "titi" dans la cellule A1.

    Bon dev...
    laloune

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Sais-tu ce que tu veux faire ? Remplacer des données dans des cellules ou remplacer un "NOM" de cellule ou de plage dans un classeur ou dans une feuille de calcul ?
    Réponds déjà à ça

  13. #13
    Membre confirmé Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Par défaut
    Salut

    Ce que je veux faire :

    quand jexporte mes données SAP
    Mes en-tetes de colonne sont les suivantes
    article|reference|quantité|Div.

    Je veux que mon en tête de colonne ne soit pas nommée Div. mais Div
    Car après j'exporte les données dans access et je ne peux pas avoir un champ Div. dans ma table j'ai une erreur à cause du point c'est pour ça que je veux remplacer mon en - tete de colonne Div. par Div

    Est ce que c'est plus clair pour vous car je pense que j'étais pas trop clair dans mon explication...

    Merci de votre aide

    A+

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Alors tu peux supprimer le code que tu nous as mis dans ton premier post. Il essaie de supprimer un NOM de cellule ou de plage (qui n'existe pas) alors que tu veux simplement remplacer le contenu d'une cellule.
    Pour ça, tu sélectionnes ta ligne, tu recherche le vilain mot et quand tu as trouvé la cellule, tu mets le bon à la place. Ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Set Cellule = Rows("1:1").Find("Div.") 'Attribue une référence à l'objet de ta recherche
        With Cellule
            .Replace What:="Div.", Replacement:="Div"
        End With
    Réponse, d'ailleurs qui t'a déjà été donnée et qu'il ne te restait plus qu'à adapter

  15. #15
    Membre confirmé Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Par défaut
    Merci beaucoup

    Ca fonctionne parfaitement !

    Juste une chose ma macro se trouve sur un fichier excel appelé macro
    Mon autre fichier excel s'appelle produit
    J'ai crée un bouton sur ce fichier qui lance la macro du fichier macro, Le problème c'est que quand je lance la macro je dois fermer 2 fichiers excel

    Comment puis faire pour éviter cela ?

    Merci

    A+

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Le problème c'est que quand je lance la macro je dois fermer 2 fichiers excel
    Quelle macro ? Dans quel fichier ?
    Montre ton code

  17. #17
    Membre confirmé Avatar de lolo_bob2
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 195
    Par défaut
    Re salut

    Dans mon fichier excel appelé macro j'ai ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub remplacer()
      For Each c In Range("E:E")
        If c.Value <> "" Then
          c.Value = Replace(c.Value, ",", ".")
          c.Value = Replace(c.Value, " EA", "")
          c.Value = Replace(c.Value, " M", "")
        End If
      Next c
      Range("A:B").EntireColumn.Delete
      Range("1:3").EntireRow.Delete
      Set Cellule = Rows("1:1").Find("Div.") 'Attribue une référence à l'objet de ta recherche
      With Cellule
        .Replace What:="Div.", Replacement:="Div"
      End With
    End Sub
    Dans mon autre fichier excel appelé produit
    J'ai un bouton qui me permet d'executer ce code...
    Car comme je fais des export de SAP vers excel je nepeux pas avoir de macro dans mon fichier produit sinon l'export ne fonctionne pas..
    Donc je fais appelle à la macro du fichier macro

    Est ce que c'est clair ?

    Merci

Discussions similaires

  1. [XL-2007] Erreur d'execution '13' entre deux macro
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/05/2015, 06h07
  2. Réponses: 0
    Dernier message: 12/02/2015, 11h19
  3. Réponses: 1
    Dernier message: 02/05/2014, 01h24
  4. Réponses: 1
    Dernier message: 14/04/2012, 17h43
  5. erreur d'execution '13' dans une macro Excel lors du passage 2003->2007
    Par Bobsinglar dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/10/2008, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo