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 :

Excel et macro en Python


Sujet :

Macros et VBA Excel

  1. #21
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 043
    Points : 9 452
    Points
    9 452
    Par défaut
    bon cette fois-ci au lieu de reboucler on a un objet vide quand il n'y a plus rien à remplacer. En mettant ce code qui fait sortir de la boucle si l'objet c est vide cela devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Set c = .FindNext(c)
        If c Is Nothing Then Exit Do
    Loop While c.Address <> firstAddress

  2. #22
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut
    Je comprends la logique, mais pourquoi dans le cas de caractères numériques ou spéciaux, la c.value passe à Nothing en provoquant une erreur. ?
    Alors que dans la cas "classique", il boucle et si c.find(next) renvoie null, c.value passe aussi en nothing mais sans provoquer d'erreur....

    Je ne comprends pas

  3. #23
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 043
    Points : 9 452
    Points
    9 452
    Par défaut
    je ne suis pas un spécialiste mais si tu regardes les exemples Microsoft sur le findNext ici, il y a bien un double test sur les deux derniers exemples.

  4. #24
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 043
    Points : 9 452
    Points
    9 452
    Par défaut
    Hello,
    Remarques concernant l'utilisation de Find et de FindNext.
    1 - Attention si on change des options dans les boîtes de dialogue Rechercher, Remplacer d'Excel, si on ne change pas ces options dans le code VBA, ce sont les options des boîtes de dialogue qui seront prises en compte.
    2 - Si l'on remplace ce que l'on recherche, normalement on ne boucle pas car la valeur que l'on recherche n'est plus présente et donc on a normalement un Nothing sur le findNext qui devait nous ramener au départ. Si cela n'est pas le cas c'est que le remplacement de la première valeur trouvée n'a pas fonctionné ou que l'on remplace par la même valeur.
    3 - Attention à l'option LookAt du Find, si l'on fait une recherche sur une partie du contenu de la cellule, il faut mettre l'option à xlPart.


    Dans le cas de FadeToBlack, il faut donc s'interroger de savoir si tous les remplacements ont eu lieu car normalement si c'est le cas on ne doit pas boucler et donc toujours sortir sur un c à Nothing. Pour piéger le cas ajouter :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    If c Is Nothing Then
                        Debug.Print "c = Nothing"
                        Exit Do
                    ElseIf c.Address = firstAddress Then
                       Debug.Print "Bouclage : ", firstAddress, c.Value,  oldV, NewV
                    End If
    Dans la fenêtre d'exécution de VBA s'affiche alors la première adresse trouvée avec la dernière valeur de la cellule, la valeur à remplacer, la valeur de remplacement.


    Ami calmant, J.P

Discussions similaires

  1. [Excel] Une macro pour F4
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 20/06/2006, 16h09
  2. Ouverture de fichier Excel avec macros
    Par Mathusalem dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/06/2006, 11h39
  3. [VBA][Excel]Exécution macro avec fichiers source
    Par ouezon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/12/2005, 00h00
  4. VBA et EXCEL et MACRO
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 14/11/2005, 18h00
  5. probleme de selection aleatoire sur excel avec macro vba
    Par guillaume sors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 10h51

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