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 :

Problème de macro VBA non exécutée


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Problème de macro VBA non exécutée
    Bonjour à tous.
    Voilà mon problème: (Toutes les cellules, colonnes, valeurs, etc. sont des exemples)

    Je souhaite effacer le contenu d'une cellule de la colonne A de la feuille 1, qui contiens 8, quand le contenu de la cellule B1 de la feuille 2 vaut 10.
    La position de la cellule de la colonne A à effacer est variable. On peut saisir 8 n'importe où entre 1 et1500. Je saisi en A15.
    J'ai tout essayé, et après avoir parcouru le web en long et en large, il s'avère a priori que l'on ne peut pas faire ça avec les fonctions classiques d'Excel. Il faut donc passer par du VBA, et je suis pas fort…
    Ce que j'ai fais, avant de baisser les bras:
    Sur la colonne A feuille 1, j'ai fais un contrôle de doublon pour être sûr de n'avoir qu'une fois la valeur 8 que je veux effacer.
    Sur la feuille 2:
    En A1 , j'inscrit 8, valeur de la cellule que je cherche à effacer.
    En B1, je saisi 10 qui est le déclencheur de l'action d'effacement.
    En C1, j'ai saisi la formule "=EQUIV(A1;'feuille 1'!A1:'feuille 1'!A1500;0)" qui me donne le numéro de ligne de la cellule de colonne A feuille 1 contenant 8, donc je récupère 15 en C1
    Jusque là, ça fonctionne.
    Ensuite, ça se dégrade.
    J'ai fait clic droit sur l'onglet "feuille 2" et dans la fenêtre VBA, j'ai écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Integer   
    I = Range("C1") 'Je veux ranger dans "I" la valeur de C1 qui vaut 15
               If Range("B1") = 10 Then 
                                      Sheets("feuille 1").Range("A1" & I-1).ClearContents 
                                      ' Avec Range("A1"& I-1), je souhaite atteindre la cellule de la colonne A qu'il faut effacer.
                                      ' Comme A1 est en 1, j'enlève 1 à l'index "I" qui vaut 15. J'obtiens donc A1+14 , et dans ma logique, j'efface la cellule A15
                           End If                                                                                       
    End Sub
    Eh bé non !!!!

    Bon, j'ai 2 soucis:
    1- La partie VBA ne marche pas bien que je n'ai pas de défaut de compilation. C'est donc une erreur "logique"
    2- Quand je veux utiliser le débogage pas à pas, en tapant F8, je n'obtiens qu'un petit 'ting' et quand je veux faire F5 exécution, je n'ai pas ma petite macro dans la liste de choix.

    Help me !

    Merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    C'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets("feuille 1").Range("A" & I - 1).ClearContents
    et non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets("feuille 1").Range("A1" & I - 1).ClearContents
    Car dans ton cas, tu travaille sur la cellule A114 et A14.

    Hervé.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci Hervé.
    Donc je comprends que l'on travaille sur des valeurs texte en faisant ça, et que l'on concatène.
    Je pensais qu'on travaillait en numérique.
    Ceci dit, ça ne marche qu'en même pas.
    Là, je n'ai servi que la dernière mouture. J'avais déjà écrit ça lors de mes multiples tentatives.

    Mais pourquoi je ne peut pas utiliser le débogueur (F8)?, et pourquoi ce code n'apparait pas
    dans la liste de choix quand je fait "executer sub/useforme (F5).?
    Ce n'ai pas une "Sub" ?
    Si je pouvais voir ce qui se passe pas à pas, ça m'aiderai.

    Cordialement

    Philippe

    Je joins mon petit fichier: efface cellule.xls

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour, bonjour,

    ne pas confondre simple procédure quelconque et procédure évènementielle !

    Tester le code au besoin dans une simple procédure avant de l'appliquer dans un évènement …

    ‼ (cf règles du forum)
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    OK merci du conseil
    J'y travaille dès que possible.

    Je clôture la discussion

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    La discussion est résolue mais juste une petite précision.
    Mais pourquoi je ne peut pas utiliser le débogueur (F8)?, et pourquoi ce code n'apparait pas
    dans la liste de choix quand je fait "executer sub/useforme (F5).?
    Ce n'ai pas une "Sub" ?
    Tout simplement parce qu'un argument est demandé ! et de ce fait, la Sub n'est pas visible dans la boite (c'est une possibilité pour "cacher" une sub, demander un argument factice). Pour tester, il te faut appeler la sub par l'intermédiaire d'une autre en passant l'argument :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Test()
     
        Worksheet_Change ActiveCell
     
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        MsgBox "L'adresse de la cellule passée en argument est : " & Target.Address(0, 0) & vbCrLf & "Donc, on voit que ça marche !!!"
     
    End Sub
    Hervé.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci Hervé pour ces précisions...
    J'ai clôturé la discussion parce que il faut que je m'investisse plus pour éviter d'abuser de vos bons conseils
    à tous...
    Je suis automaticien depuis longtemps, donc programmer je sais dans la philosophie, mais c'est quand même
    vraiment différent. J'ai des habitudes, des réflexes, des acquis et pour le coup, je suis obligé de m'y
    remettre pour m'adapter et apprendre.
    Là, j'avais besoin pour une affaire où je dois gérer des lancement et des suivi de fabrications, d'utiliser Excel
    plus que pour ces fonctions de tableur, et étant pris par le temps, j'ai opté pour l'entraide, et ça a fonctionné.
    J'ai encore du boulot dessus, mais le fichier est fonctionnel à 90%.

    Toujours est-il que ça fait m'a découvrir le potentiel d'Excel. Je savais qu'il y avait des possibilités, mais sans plus.
    Là, je crois que j'ai mis le doigt dans les pignons. Ça m'a vraiment donné envie d'aller plus loin.

    J'ai parlé de fonctionnel à 90% au dessus, mais j'ai besoin de 100%, donc il est pratiquement sûr
    que j'aurai encore besoins de votre savoir faire. Je me sens encore bien novice.

    Encore grand merci à tous et longue vie à ce forum.

    Philippe

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

Discussions similaires

  1. [XL-MAC 2011] Problème de Macro VBA
    Par Muzzik dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/06/2015, 16h25
  2. Formule Excel ok mais VBA non exécutable
    Par dutronephilippe dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/03/2014, 10h31
  3. [XL-2007] Non exécution de macro + problème format
    Par Le_ménéstrel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2012, 13h05
  4. [BO 5.1.8][VBA] Problème de macro VBA
    Par DOMINO53 dans le forum SDK
    Réponses: 1
    Dernier message: 07/12/2007, 08h51
  5. [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

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