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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    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 confirmé
    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
    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
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    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
    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
    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)

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

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

    Je clôture la discussion

  6. #6
    Expert confirmé
    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
    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é.

+ 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