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 remplir une cellule en fonction du contenu d'une autre cellule


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Macro remplir une cellule en fonction du contenu d'une autre cellule
    Bonjour,

    Je voudrais mettre dans ma macro la condition suivante.
    J'ai une colonne A contenant 3 possibilités: X, Y et Z.
    Je voudrais faire la condition suivante:

    Si en colonne A j'ai X, alors j'écris à la même ligne dans la colonne B: X'
    Si en colonne A j'ai Y, alors j'écris à la même ligne dans la colonne B: Y'.
    Etc...

    Et je voudrais que la macro me fasse ca pour toutes les lignes de mon tableau.

    Je pense que ca doit se faire avec un IF... THEN, mais je ne sais pas comment gérer le fait qu'il le fasse pour l'ensemble du tableau...

    Merci beaucoup.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 388
    Points : 437
    Points
    437
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub sc()
    Dim cellule As Range
        For Each cellule In Range("A1:A20")
            Select Case cellule.Value
                Case "X", "Y", "Z"
                cellule.Offset(0, 1) = cellule & "'"
            End Select
        Next cellule
    End Sub
    à adapter selon le tableau

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Fonction taille du tableau inconnu
    Si t'as taille de tableau evolue ce code sera complémentaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
        Dim nb As Integer
        nb = 1
        Do While Cells(nb, 1) <> ""
            Select Case (Cells(nb, 1))
            Case "X", "Y", "Z"
                Cells(nb, 1).Offset(0, 1) = Cells(nb, 1) & "'"
            End Select
            nb = nb + 1
        Loop
    End Sub
    Bonne journée

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par JPierreM Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub sc()
    Dim cellule As Range
        For Each cellule In Range("A1:A20")
            Select Case cellule.Value
                Case "X", "Y", "Z"
                cellule.Offset(0, 1) = cellule & "'"
            End Select
        Next cellule
    End Sub
    à adapter selon le tableau
    Vraiment merci pour ton aide, je comprends très bien le code et il fonctionne. Ceci dit la partie avec offset est si j'ai bien compris destiné à sélectioné la colonne d'après pour ajouter un " ' " à la lettre en colonne A. Imaginons que je veux à la place de mettre X' en colonne B, mettre "toto" dans n'importe quelle colonne. Donc sans utiliser la fonction offset, que dois-je faire?

    Si j'utilise quelque chose dans le genre:
    Range(Cells(cellule.Row, 25000)).Value = "toto"

    Ca pourrait marcher? (je prends dans l'exemple la colonne 25000)

    Merci !

    EDIT:

    En fait je me suis dis que je pouvais utilisé Offset(0, 25000)...

    Voici mon code. Le code "Appliquer le type" fonctionne très bien, mais en revanche, le code "Appliquer la nature" compile très bien, mais n'inscrit rien dans ma colonne de destination... Je sais pas si j'ai un problème avec mon 1er exit sub qui fait sortir totalement du programme et pas seulement du Case...

    Merci!
    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
    27
    28
    29
    30
    31
    32
    33
        ' Appliquer le type
     
    Windows("DSIC-Outil-Inputs_v0.3.xlsx").Activate
    Sheets("B-budget Annuel").Select
    Dim cellule_type As Range
        For Each cellule_type In Range("D4:D65536")
            Select Case cellule_type.Value
            Case "Projet", "Récurrent", "Structure"
            cellule_type.Offset(0, -3) = "Activité JH"
            Case ""
            Exit Sub
            Case Is <> "Projet", Is <> "Récurrent", Is <> "Structure"
            cellule_type.Offset(0, -3) = "Coût non-JH"
            End Select
        Next
     
        ' Appliquer la Nature "Charge de personnel", "Coût non-JH" ou "Sous-Activité"
     
    Windows("DSIC-Outil-Inputs_v0.3.xlsx").Activate
    Sheets("B-budget Annuel").Select
    Dim cellule_nature As Range
        For Each cellule_nature In Range("A4:A65536")
            Select Case cellule_nature.Value
            Case "Activité JH"
            cellule_nature.Offset(0, 7) = "Charge de personnel"
            Case ""
            Exit Sub
            Case "Coût non-JH"
            cellule_nature.Offset(0, 7) = "Coût non-JH"
            'Case "Sous-activité"
            'cellule_nature.Offset(0, 7) = "Sous-activité"
            End Select
        Next cellule_nature

Discussions similaires

  1. Afficher/Masquer une Combobox en fonction du contenu d'une cellule
    Par Kraster dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/03/2015, 13h51
  2. Réponses: 8
    Dernier message: 30/01/2015, 18h43
  3. Réponses: 1
    Dernier message: 09/12/2014, 13h11
  4. [MySQL] Changement bgcolor d'une ligne en fonction du contenu d'une cellule
    Par clementdevelop dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/05/2013, 15h41
  5. Réponses: 1
    Dernier message: 05/03/2012, 16h04

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