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 portant sur une cellule [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Macro portant sur une cellule
    Bonjour,
    En vue d'un test, j'écris dans une cellule d'une feuille ad hoc les valeurs successives d'une variable string mais elles s'écrivent par défaut à la verticale dans la cellule. Sur la base d'un tutoriel de Silky Road ("Les événements dans la feuille de calcul Excel", merci), j'ai écrit une procédure événementielle qui, quand la cellule est sélectionnée, est censée changer son format pour annuler le retour à la ligne, mais ça ne marche pas. J'ai fait diverses modifcations, sans succès. Voici mon code:
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range, Z)
    Dim d As Integer
    d = Z
        'If Target = ThisWorkbook.Sheets("registre").Range("A" & d) Then
        With Range("A" & d)
        .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
    'End if
    End Sub
    Et voici les lignes qui devraient déclencher la macro, dans la procédure principale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ThisWorkbook.Sheets("registre").Activate
    Cells(Z, 1).Select
    Selection.Value = GED_N1
    Z = Z + 1
    Z est une variable de la proc principale qui joue un autre rôle sur cette même feuille "registre" et je veux éviter que les données s'écrasent les unes les autres.
    Je n'ai jamais bien maîtrisé les proc événementielles et je remercie d'avance celui ou celle qui me dépatouiilera de celle-ci.
    Cordialement
    touche_a_tout

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    la procédure qui est reconnue et déaclenchée par Excel est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    Ta variable Z en question, est-elle stockable dans une cellule ou un objet ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, au risque de me tromper, vu le manque de code je ferais quelque chose ressemblant à cela:

    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
    ThisWorkbook.Sheets("registre").Activate
    Cells(Z, 1).Select
    With activeCell
         .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
     End With
    Selection.Value = GED_N1
    Z = Z + 1  ' en sachant qu'il doit peut être y avoir une boucle
    Toutefois, je ne peut rien vérifier???
    Cordialement

  4. #4
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Macro portant sur une cellule
    Merci Jean-Philippe André et Transitoire,
    Si je pige bien, c'est mon Z dans la parenthèse qui fait cafouiller. Le plus simple est de créer une feuille exprès pour ce test, feuille sur laquelle Z n'aura rien à faire.
    Dans le post de Transitoire, je ne comprends pas quel code manque. Mais ça ne m'empêche pas de continuer sans Z !
    (mais non sans aide, votre aide, merci !).
    Cordialement,
    touche_a_tout

  5. #5
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Macro portant sur une cellule
    Re,
    Je n'ai pas dû bien comprendre, car ça ne fonctionne toujours pas. Tu me dis:
    la procédure qui est reconnue et déclenchée par Excel est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
     End Sub
    J'ai compris que je devais mettre mes 10 et quelques lignes de code entre "Private Sub..." et "End Sub" (sauf que j'ai oublié d'incrémenter d dans mon code du post No 1) mais ça ne suffit pas.
    Comme la sub principale sélectionne une cellule dans la feuille concernée, on a l'événement "SelectionChange" qui devrait lancer la procédure événementielle, mais elle ne le fait pas, j'ai toujours mon texte en colonne.
    Est-ce que je dois préciser comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Thisworkbook.Sheets("test_cell").Range("A" & d)
    Pardon d'être aussi balbutiant, hélas.
    Cordialement
    touche_a_tout

  6. #6
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    bonsoir, la deuxième procédure, ci dessous est en fait un bout de code avec des choses qui se passent avant et d'autres qui se passent après. Et on ignore ce qui se passe???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ThisWorkbook.Sheets("registre").Activate
    Cells(Z, 1).Select
    Selection.Value = GED_N1
    Z = Z + 1
    Par contre je ne comprend pas, lorsque vous dites que votre texte reste en colonne? Comment souhaiteriez vous qu'il fasse? Il y a des choses qui m'échappent.
    Parceque lors de l'entrée des données, le déplacement de la sélection peut -être modifié par les préférences d'excel par : préférences/Edition ou aussi par procédure.
    Nom : Capture d’écran 2019-05-30 à 19.48.22.png
Affichages : 89
Taille : 77,7 Ko
    Cordialement

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

Discussions similaires

  1. [XL-2007] arrêt de la macro suite à un offset sur une cellule
    Par marco62118 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/12/2015, 23h20
  2. [XL-2007] Lancer une macro lorsque l'on clique sur une cellule
    Par catetesse dans le forum Excel
    Réponses: 3
    Dernier message: 28/09/2012, 11h57
  3. VBA - Macro : Action sur click droit souris sur une cellule
    Par Raphael DIAZ dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/02/2011, 10h45
  4. [XL-2003] macro VBA pour imposer signe "-" sur une cellule
    Par cilala dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/09/2010, 00h13
  5. lancer une macro sur une cellule ou sur du texte
    Par xadep dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/09/2009, 17h50

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