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 :

Remplir une cellule automatiquement quand une autre est remplie en fonction d'une liste


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Remplir une cellule automatiquement quand une autre est remplie en fonction d'une liste
    Bonjour à tous,

    Je vous expose ma problématique :

    J'ai 2 feuilles que nous nommerons : "remplir" et "liste"

    La feuille liste comprend une liste 2 colonnes que nous nommerons : "CODE" et "CLAIR"

    J'aimerais que dans n'importe quelle cellule de la feuille "remplir" (sauf celles des bords) : dès lors que je rentre un mot se trouvant dans la colonne "CODE", ça me remplisse la cellule en dessous avec le mot associé de la colonne "CLAIR"

    Je ne sais pas si tout est clair

    Merci d'avance pour vos réponses

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le plus simple est d'utiliser une plage nommée pour tes deux colonnes : la première colonne c'est les codes, la seconde colonne c'est les claires

    si par exemple la plage nommée contenant ces les valeurs de ces deux colonnes s'appelle matrice, essaye avec cette procédure à coller dans le module de ta feuille remplir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Tablo
    Dim i As Long
     
    ' exclusion des cas : écriture dans plusieurs cellules / écriture en colonne 1 / ecriture en ligne 1
    If Target.Cells.Count > 0 Then Exit Sub
    If Target.Column = 1 Or Target.Row = 1 Then Exit Sub
    Tablo = Sheets("liste").Range("MATRICE")
     
    For i = LBound(Tablo, 1) To UBound(Tablo, 1)
        If Target.Value = Tablo(i, 1) Then Target.Offset(1, 0).Value = Tablo(i, 2)
        Exit For
    Next i

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse rapide mais je viens d'essayer et ça ne marche pas :/

    Pour la matrice j'ai mis sous cette forme "A1:B7"

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    c'est à dire ça ne marche pas, il ne se passe rien ?

    Fait voir ton code

    la plage à mettre dans le code ne doit pas contenir les titres de tes colonnes

    si par exemple la plage est en A1:B15 (titres inclus) alors la matrice est A2:B15

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Non effectivement rien ne se passe
    Je mets le lien du fichier excel. Ma matrice est dans Feuil2 et j'aimerais que ça puisse agir sur Feuil1 lorsque j'écris dans une cellule.

    remplisage auto.xlsm

  6. #6
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tu as mis la procédure dans un module standard

    il faut que tu mettes la procédure dans le module de la feuille : dans l'éditeur de code VBA, tu double clic que la feuille en question, et tu colles la macro dans le module de cette feuille

    j'en ai profité pour fluidifier la procédure, en l'état elle s'activait deux fois au lieu d'une, et j'avais écrit une coquille que j'ai corrigé

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Tablo
    Dim i As Long
     
    ' exclusion des cas : écriture dans plusieurs cellules / écriture en colonne 1 / ecriture en ligne 1
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Column = 1 Or Target.Row = 1 Then Exit Sub
    Tablo = Sheets("Feuil2").Range("A1:B7")
     
    For i = LBound(Tablo, 1) To UBound(Tablo, 1)
        Application.EnableEvents = False
        If Target.Value = Tablo(i, 1) Then
            Target.Offset(1, 0).Value = Tablo(i, 2)
            Application.EnableEvents = True
            Exit For
        End If
    Next i
     
    End Sub

  7. #7
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    je viens d'essayer et ça fonctionne sauf que dès lors que je rempli une cellule avec du texte autre que celui dans les colonnes, j'ai bien l'impression que ça ne marche plus et il me faut fermer le fichier puis le réouvrir :/

  8. #8
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    dans la présentation de ta demande, tu voulais écrire une donnée si la cellule du dessus contenait une certaine donnée

    tu confirmes que ça fonctionne, la demande est donc répondue

    tu n'as pas parlé du cas où tu écrivais une donnée inexistante dans ton tableau, nous ne pouvons pas prévoir les cas à ta place

    quel doit être le comportement attendu ?

    - si j'écris une donnée qui n'existe pas, j'efface systématiquement la donnée sur la ligne du dessous (s'il y en a une) ?
    - sinon quoi d'autre ?

  9. #9
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Effectivement la demande est répondue ^^

    J'avais oublié de précisé le reste

    En gros je souhaite remplir mes cellules de la feuille 1 normalement avec des mots lambda et les mot en clair/codé de temps en temps comme indiqué précédemment. Je ne souhaite pas effacer quelconque cellule si je rempli avec une donnée qui n'existe pas.

    Dans mon cas, je dois remplir ma feuille comme une simple feuille classique et que le code s'active automatiquement dès que j'entre une valeur se trouvant dans dans le tableau de la feuille 2.

    Est ce que ce genre de chose est possible?

  10. #10
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Je ne comprend pas bien en quoi le code proposé ne répond pas à cette demande
    tu veux que ça s'effectue quand on écrit un mot figurant dans CODE, et qu'on n'efface jamais le contenu des cellules

    le code proposé fonctionne ainsi :
    1) si on écrit dans une cellule qui n'est pas en ligne 1 ou colonne A
    2) et que la valeur écrite fait partie de la liste CODE

    ==> on écrit en dessous sa correspondance CLAIRE

    ce qui revient à dire :

    - si je n'écris pas un mot CODE : rien ne se passe
    - si j'écris un mot CODE : le mot CLAIRE se met en dessous


    peux-tu reformuler le problème rencontré et le comportement voulu ? je n'ai pas saisi la subtilité

  11. #11
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Mon problème est :

    - Lorsque j'ouvre mon fichier et que j'écris un mot dans une cellule qui n'est pas un code puis que je veux ensuite écrire dans une autre cellule un mot CODE, le mot clair ne se met pas en dessous ni nulle part ailleurs

    - Lorsque j'ouvre mon fichier et que j'écris un mot CODE dans une cellule, ça fonctionne et ce autant de temps que je rempli des cellules avec des mots CODE. Mais à partir du moment où je rentre un mot différent de la liste de mot CODE et que je veux remettre un mot CODE ensuite, ça ne fonctionne plus

    Du coup, je suis obligé de réouvrir le fichier pour que ça fonctionne à nouveau

    Donc ce que j'aimerais qu'il se passe, c'est que le programme fonctionne peu importe le moment où j'entre un mot CODE que ce soit avant ou après avoir rempli d'autres cellules sans mot CODE

  12. #12
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Ah oui là c'est très clair , en fait les évènements ne se réactivent pas correctement dès que le test devient négatif

    La ligne 11 doit être placée entre la ligne 12 et 13, comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = LBound(Tablo, 1) To UBound(Tablo, 1)
        If Target.Value = Tablo(i, 1) Then
            Application.EnableEvents = False
            Target.Offset(1, 0).Value = Tablo(i, 2)
            Application.EnableEvents = True
            Exit For
        End If
    Next i

  13. #13
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Super!!!

    C'est parfait et exactement ce que je voulais.

    Un très grand merci pour ton aide

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2022
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour à tous, j'ai un problème pour un projet en Excel VBA.
    Je doit pouvoir écrire un programme permettant de faire ceci:
    Quand on écrit dans une cellule de la feuille1, une autre cellule de la feuille2 se remplit automatiquement par ce qu'on écrit.
    Aidez moi s'il vous plait.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/09/2014, 11h30
  2. [XL-2010] Remplir une cellule automatiquement avec fonction SI
    Par nadyves dans le forum Conception
    Réponses: 3
    Dernier message: 19/12/2013, 08h00
  3. [XL-2003] Remplir automatiquement une ligne en fonction d'une cellule
    Par Tonio68 dans le forum Excel
    Réponses: 8
    Dernier message: 25/03/2011, 18h51
  4. [XL-2003] Colorer une cellule automatiquement dès qu'un filtre est sélectionné
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/02/2011, 15h47
  5. [AC-2003] Bloquer une case a cocher quand l'autre est cliqué
    Par Scopas dans le forum IHM
    Réponses: 3
    Dernier message: 27/04/2009, 13h34

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