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 cellule en fonction de la valeur d'une autre [XL-2010]


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
    Gestionnaire de parc micro-informatique
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut
    Bonjour à tous

    Je débute sur VBA et j'aimerais savoir si quelqu'un a la solution à mon besoin :

    Je dois remplir avec une macro VBA Excel 2010 une colonne B à partir de la colonne A.

    je vais utiliser des produits alimentaires comme exemple

    exemple la colonne A peut se remplir aléatoirement de cerise, tomate, fraise, bière, vin, courgette etc sur une longueur aléatoire

    j'ai besoin que la macro remplisse en fonctionne de la catégorie ( fruit ; légume ; boisson ) la colonne B en fasse de chaque aliment.

    j'espère être assez clair sur le besoin...

    merci d'avance pour votre aide

    cela donnerait

    	A		B
    1	cerise		fruit   
    2	courgette	legume
    3	fraise		fruit 
    4	biere		boisson
    ....
    j'avais pensé à


    if range("A1")="cerise" then Range("B1") = "fruit"

    mais ça ne peut pas aller car il me faut forcement une boucle et un test de condition pour gérer le tableau


    merci

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut
    c'est bon j'ai trouvé

    à toutes fins utiles si quelqu'un en avait besoin voici le 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub Macro2()
    '
    ' Macro2 Macro
    '
    Dim i As Integer
     
    i = 2
     
    Do While Cells(i, 1).Value <> ""
     
    If Range("A" & i) = "cerise" Then Range("B" & i) = "fruit"
    If Range("A" & i) = "whisky" Then Range("B" & i) = "boisson"
    If Range("A" & i) = "courgette" Then Range("B" & i) = "legume"
    If Range("A" & i) = "coca cola" Then Range("B" & i) = "boisson"
    If Range("A" & i) = "jus d-orange" Then Range("B" & i) = "boisson"
    If Range("A" & i) = "fraise" Then Range("B" & i) = "fruit"
    If Range("A" & i) = "choux-fleur" Then Range("B" & i) = "legume"
    If Range("A" & i) = "orangina" Then Range("B" & i) = "boisson"
    If Range("A" & i) = "vin" Then Range("B" & i) = "boisson"
    If Range("A" & i) = "carotte" Then Range("B" & i) = "legume"
    If Range("A" & i) = "framboise" Then Range("B" & i) = "fruit"
     
     
    i = i + 1
     
    Loop
     
     
    End Sub
    bonne journée à tous

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le problème de ton code (qui fonctionne cependant), c'est que si tu as 1000 produits, tu dois faire 1000 lignes pour tester chacun

    il y a des méthodes plus pratiques, en voici une :

    - on construit deux tableaux : l'un contient tous les produits, l'autre indique la catégorie du produit
    - on défini la dernière ligne de ta colonne A
    - on fait une boucle sur chaque cellule A
    - on fait une sous-boucle pour tester chaque produit du tableau de produit
    - quand on trouve le produit, on va chercher sa catégorie dans le tableau de catégories et on l'écrit en cellule B

    l'avantage, c'est que pour rajouter un produit dans ton code, il te suffit de le référencer dans tes deux tableaux (son nom et sa catégorie)

    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
     
    Sub Macro2()
     
    Dim i As Integer
    Dim j As Integer
    Dim DerLig As Long
    Dim TabProduit
    Dim TabCategorie
     
    TabProduit = Array("cerise", "whisky", "courgette", "coca cola", "jus d-orange", "fraise", _
                       "choux-fleur", "orangina", "vin", "carotte", "framboise")
     
    TabCategorie = Array("fruit", "boisson", "legume", "boisson", "boisson", "fruit", _
                        "legume", "boison", "boisson", "legume", "fruit")
     
    DerLig = UsedRange.Columns(1).Rows.Count
     
    For i = 1 To DerLig
        For j = LBound(TabProduit) To UBound(TabProduit)
            If Range("A" & i) = TabProduit(j) Then
                Range("B" & i) = TabCategorie(j)
                Exit For
            End If
        Next j
    Next i
     
    End Sub
    d'autres approches sont possibles, on pourrait créer une plage dynamique dans Excel pour tes produits et les catégories associées
    ensuite, le code sera entièrement dynamique : tu as juste à ajouter une ligne dans ta plage Excel pour le produit et sa catégorie
    aucune maintenance à faire dans le code

    si ça te tente, on peut travailler sur ça

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut
    c'est bien plus pro comme tu fais effectivement, je te remercie

    bonne journée

  5. #5
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 1
    Par défaut Probleme avec l’exécution d'une ligne 16
    Bonjour,
    Lorsque je rentre votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLig = UsedRange.Columns(1).Rows.Count
    cela m'affiche error 424 et je ne comprend pas
    Si vous pouviez m'éclairer sur mon erreur merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/10/2014, 22h48
  2. [XL-2010] Masquer des cellules en fonction de la valeur d'une autre cellule
    Par Azulnoth dans le forum Excel
    Réponses: 7
    Dernier message: 17/07/2014, 17h45
  3. Déplacer une cellule en fonction de la valeur d'une autre cellule
    Par wabo67 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/03/2012, 15h54
  4. Réponses: 5
    Dernier message: 07/12/2010, 08h58
  5. Réponses: 7
    Dernier message: 13/10/2007, 23h31

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