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 :

Bouton pour remplir sélectivement des cellules [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Bouton pour remplir sélectivement des cellules
    Bonjour à tous,

    Dans une feuille, j'ai 2 jeux de colonnes, 5 input et 5 output. Les colonnes output sont simplement une réplique des valeurs des colonnes input. Ce que je veux, c'est pouvoir sélectivement remplir ou vider les cellules ouput, et cela indépendamment pour chaque ligne. Pour cela, j'ai ajouté pour chaque ligne un simple bouton (contrôle de formulaire) qui agit comme un bouton de commande en lisant le texte du bouton, et qui remplira ou videra alternativement la ligne output contenant le bouton.

    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
    20
    21
    22
    23
    24
    25
    26
    Sub Button_Auto()
     
       Dim Btn As Object
       Dim LRow As Integer
       Dim LName As Variant
       Dim LRangeInp As String
       Dim LRangeOut As String
     
       LName = Application.Caller
       Set Btn = ActiveSheet.Shapes(LName)
     
       'Find row that button resides in
       LRow = Btn.TopLeftCell.Row
       LRangeInp = "AC" & CStr(LRow) & ":AG" & CStr(LRow)
       LRangeOut = "AO" & CStr(LRow) & ":AS" & CStr(LRow)
     
       'Change range values
        If Btn.TextFrame.Characters.Text = CStr("") Then
            Btn.TextFrame.Characters.Text = "X"
            Range(LRangeOut).Value = Range(LRangeInp).Value
        Else
            Btn.TextFrame.Characters.Text = ""
            Range(LRangeOut).Value = ""
        End If
     
    End Sub
    Cette macro fonctionne et semble faire exactement ce que je voulais. Cependant, inexplicablement pour certaines lignes, la macro renvoie une erreur d'exécution "13" lors de mon premier 'If'. Apparemment, un problème sur le type de variable.
    J'ai trouvé ailleurs que cela pouvait être causé par une erreur (#Valeur!) dans la feuille de calcul.
    J'ai donc essayé d'ajouter cette ligne avant le premier 'If':

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsError(Btn.TextFrame.Characters.Text) Then
    Cela a réglé le problème d'arrêt du code, mais maintenant le bouton reste inefficace pour ces lignes problématiques.
    Pourriez-vous m'aider à faire fonctionner cette macro tout le temps?

    Merci d'avance pour vos conseils.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 29
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Déclarer Btn...Text As String en variable avant de te l'appeler dans If résout-il le problème ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci pour ce conseil. J'ai en effet pu contourner le problème en créant une nouvelle variable String pour y stocker le texte du bouton, préalablement converti en String.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Btn1 As String
    Btn1 = CStr(Btn.TextFrame.Characters.Text)

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

Discussions similaires

  1. [AC-2007] Création bouton pour activer gestion des tables liées
    Par ouahab dans le forum Access
    Réponses: 1
    Dernier message: 12/10/2012, 09h59
  2. [AC-2007] Bouton pour remplir champs
    Par puledad1 dans le forum Access
    Réponses: 1
    Dernier message: 07/09/2011, 08h44
  3. [XL-2007] Bouton Clear pour supprimer contenu des cellules
    Par boguista1985 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/08/2011, 12h04
  4. Réponses: 2
    Dernier message: 29/09/2010, 16h47
  5. Réponses: 4
    Dernier message: 06/08/2010, 16h52

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