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 VBA => Ajouter un colorie cellule après avoir automatisé un ajout de ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Par défaut Macro VBA => Ajouter un colorie cellule après avoir automatisé un ajout de ligne
    Bonjour,

    Ce code demande l'insertion de ligne que l'utilisateur à sélectionné, à la suite de ça j'aimerai que le code me colorie certaines cellules ( à définir) de la ligne inséré ( elle est aléatoire ) donc ex un range ( A1) ne peux pas être utilisé ici car la ligne peut ce trouver n'importe ou.
    Le bout de code doit être à la ligne "'Insérer une couleur aux cellule à renseigner"
    Merci

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim response As VbMsgBoxResult

    'Vérifier si l'utilisateur a cliqué sur une ligne entière
    If Target.Rows.Count = 1 And Target.Columns.Count > 1 Then 'Exit Sub

    'Demander à l'utilisateur de confirmer l'insertion de la line
    response = MsgBox("Do you want to insert a new row above the line " & Target.Row & "?", vbYesNo + vbQuestion, "Insert a row")

    'Insérer une nouvelle ligne si l'utilisateur a cliqué sur le bouton OUI
    If response = vbYes Then
    Rows(Target.Row).Insert Shift:=x1Down

    'Insérer une couleur aux cellule à renseigner

    Range(?).Interior.ColorIndex = 45

    'Afficher une boîte de dialogue pour informer l'utilisateur que les champs de la ligné ajoutée sont à remplir
    MsgBox "You have just added a row. Please manually fill in all fields of the added row and extend formulas. (From column D to column T)", vbInformation, "Empty fields detected"
    End If
    End If


    End Sub

  2. #2
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour,

    Tu as déjà compris qu'il fallait accéder à la cellule que tu veux colorer avec une syntaxe du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(?).Interior.ColorIndex = 45
    Tu as également déjà compris comment isoler ton numéro de ligne précédent (donc celle que l'utilisateur a sélectionnée)

    Ce sont 2 notions que tu utilises déjà.

    Toi ce que tu veux c'est travailler sur la ligne d'en dessous. Il te suffit donc d'ajouter 1 au numéro de la ligne sélectionnée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & Target.Row + 1).Interior.ColorIndex = 45
    Ce qui te donne une modification de la couleur de ta cellule de la ligne sélectionnée + 1.

    On peut reparler du reste du code mais pour ta question précise c'est tout ce que tu as à faire.

    Teste et dis nous.

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, si j'ai bien compris, l'information qui te manque c'est la ligne qui a été insérée.
    Disons que tu veux colorier la cellule B de ta nouvelle ligne, tu peux ajouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                'Obtenir le numéro de la ligne insérée
                Dim insertedRow As Long
                insertedRow = Target.Row
     
                'Colorier la cellule B de la ligne insérée
                Cells(insertedRow, "B").Interior.ColorIndex = 45

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Par défaut
    Merci pour vos réponses les deux codes fonctionnent

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Par défaut
    Est-il possible d'enlever la couleur automatiquement dès lors que la personne la remplis ?
    merci

  6. #6
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Tu as 2 solutions qui pourraient approcher ta demande:
    - les mises en forme conditionnelles (directement dans le menu Excel pas besoin de VBA)
    - du code VBA mais positionné dans les événements de la feuille (sur "On change" par exemple) et pas dans un module standard. Cela s'appelle une macro événementielle.

    Ces 2 possibilités t'offrent trop de possibilités pour te les décrire ici. Je te laisse avec Google pour le coup.

Discussions similaires

  1. [WD-2003] Modification Macro VBA avec ajout BORDURE EXTERIEURE
    Par Aguire_ dans le forum Word
    Réponses: 0
    Dernier message: 09/10/2015, 10h59
  2. [OL-2003] Macro VBA d'ajout à la liste de courriels indésirables
    Par Guilbert69 dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 14/02/2013, 12h58
  3. [XL-2010] Macro VBA SOMMEPROD avec adresse de cellule et double condition
    Par Syntoll dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/08/2012, 11h44
  4. [XL-2003] Macro VBA suppression texte dans plusieurs cellules
    Par demichoux dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/06/2011, 15h28
  5. [XL-2010] Macro VBA pour supprimer des caractère situés après une valeur
    Par Guillaume_PMO dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/03/2011, 17h06

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