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 :

Macro enregistrée non ré-utilisable [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut Macro enregistrée non ré-utilisable
    Bonjour a tous,
    Devant reproduire en VBA une action sur plusieurs cellules, j'ai effectué par enregistrement de macros (sub macro3 ci dessous) le déroulé de l'action souhaitée qui fonctionne parfaitement...
    Par contre quand je la relance, elle plante avec une erreur sur la formule saisie : run time error 1004 application defined or object defined error...
    Pour info il s'agit d'une validation de cellule avec formule intégré (qui fonctionne parfaitement en direct!)
    De memoire j'ai déja eu des pbs avec les formules, car j'utilise une version américaine de Excel 2003, avec pack français, ce qui fait que j'utilise d'habitude FormulaLocal et non Formula seul, mais je ne sais pas comment proceder dans ce cas de validation.
    Un grand merci pour votre aide !

    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
    Sub Macro3()
        Range("G5").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:= _
            "=SI(D5<>"""";DECALER(Liste_SOCIETES;EQUIV(D3&""*"";Liste_SOCIETES;0)-1;;SOMMEPROD((STXT(Liste_SOCIETES;1;NBCAR(D5))=TEXTE(D5;""0""))*1));Liste_SOCIETES)"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = False
        End With
    End Sub
    Pour info : cette formule dans un cas de validation permet l'affichage que de la partie d'une liste longue correspondante a la saisie du début du champ, très pratique !

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Il faut traduire la formule en anglais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(D5<>"""",OFFSET(Liste_SOCIETES,MATCH(D3&""*"",Liste_SOCIETES,0)-1,,SUMPRODUCT((MID(Liste_SOCIETES,1,LEN(D5))=TEXT(D5,""0""))*1)),Liste_SOCIETES)
    sauf erreur.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut
    Bien vu mais déjà essayé et bien sur cela ne fonctionne pas...
    je pense qu'il faut arriver a prendre l'equivalent de FormulaLocal au lieu de Formula1, mais comment??
    Pour info la ligne de commande en français fonctionne si par exemple j'ecris :
    cells(1,1).formulaLocal = "=SI(D5<>"""";DECALER(Liste_SOCIETES;EQUIV(D3&""*"";Liste_SOCIETES;0)-1;;SOMMEPROD((STXT(Liste_SOCIETES;1;NBCAR(D5))=TEXTE(D5;""0""))*1));Liste_SOCIETES)"
    cela ne fait pas d'erreur dans la cellule, mais quand j'utilise "Selection.Validation.add", cela n'accepte pas ce FormulaLocal...
    Merci de votre aide

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'ai essayé avec une formule plus simple. Ca fonctionne. On ne peut peut pas utiliser de "formulalocal". Je ne sais pas pourquoi la formule transposée ne fonctionne pas. Est-ce que tu pourrais mettre un classeur exemple - sans données confidentielles - en pièce jointe ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut
    Merci de ton aide Daniel.
    Voila le fichier joint. J'ai créé la macro en enregistrant la mise en validation de la cellule C6.
    Je dois par VBA, remettre la validation, une fois la cellule utilisée en service si les utilisateurs modifie la validation, (que je ne peux bloquer pour raison internes!), mais lorsque je relance la macro c'est la le probléme...
    Encore merci !
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Je ne sais pas trop où j'avais fait une erreur. Voici la macro :

    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
    Sub Macro2()
        Range("C6").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:= _
            "=IF(C6<>"""",OFFSET(Liste_SOCIETES,MATCH(C6&""*"",Liste_SOCIETES,0)-1,,SUMPRODUCT((MID(Liste_SOCIETES,1,LEN(C6))=TEXT(C6,""0""))*1)),Liste_SOCIETES)"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = False
        End With
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2003] lancer une macro lorsque l'on utilise enregistrer sous dans outlook
    Par jasserin dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 11/03/2015, 23h12
  2. Macro enregistrée non fonctionnelle
    Par Danger dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/10/2008, 20h34
  3. [Debutant] Enregistrement non trier
    Par Natsboss dans le forum Access
    Réponses: 4
    Dernier message: 20/08/2006, 23h48
  4. [Débutant] Enregistrement non souhaité.
    Par Monsieur Peck dans le forum Access
    Réponses: 1
    Dernier message: 11/06/2006, 14h40
  5. Réponses: 4
    Dernier message: 08/06/2006, 23h04

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