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 :

Afficher le nom dans une case pour un choix dans une liste déroulante donnée


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut Afficher le nom dans une case pour un choix dans une liste déroulante donnée
    Bonsoir ,

    SVP si quelqu'un a une idée sur comment réaliser un code efficace pour répondre à cette question là :

    Je veux afficher le nom du manager en se basant sur le choix réalisé dans la liste déroulante de la feuille 1

    Le code que j'ai essayé de faire n'est pas du tout efficace vu que je suis débutante :
    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
    Sub test()
    For Each v In Sheets("Feuil2").Range("C2:C5")
     If v = Sheets("Feuil1").Range("G2").Value Then
     Sheets("Feuil1").Range("E4") = Sheets("Feuil2").Range("D2")
     End If
     Next v
     For Each y In Sheets("Feuil2").Range("C6:C8")
     If y = Sheets("Feuil1").Range("G2").Value Then
     Sheets("Feuil1").Range("E4") = Sheets("Feuil2").Range("D6")
     End If
     Next y
     For Each Z In Sheets("Feuil2").Range("C9:C12")
     If Z = Sheets("Feuil1").Range("G2").Value Then
     Sheets("Feuil1").Range("E4") = Sheets("Feuil2").Range("D7")
     End If
     Next Z
    End Sub
    Images attachées Images attachées   

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonsoir,

    est-tu vraiment obligé d'utiliser des cellules fusionnées .. pourquoi ne pas répéter le nom du manager sur chacune des lignes concernées, cela simplifierais grandement les choses ...

    Cdt.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Cela fera ton bonheur
    mettre ce code dans le module de la feuil1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Address = "$G$2" Then 'G2 est la liste
          For i = 2 To Worksheets("feuil2").Range("C" & Rows.Count).End(xlUp).Row
            If Cells(2, 7).Value = Worksheets("feuil2").Cells(i, 3).Value Then
                Cells(4, 5).Value = Worksheets("feuil2").Range("D" & i).MergeArea.Cells(1, 1).Value 'récupère la valeur de la cellule fusionner
                Exit For
            End If
          Next
        End If
     
    End Sub

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut
    gnain , comment faire SVP dans le cas où on a 3 feuilles c'est comme si la liste est divisée?

    Feuille1 afficher Julien et Robet
    Feuille 2 afficher Nina

    Feuille 3 le tableau complet ?
    Images attachées Images attachées    

  5. #5
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Il faut ce code dans le module de la feuil1 et la feuil2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Address = "$G$2" Then 'G2 est la liste
          For i = 2 To Worksheets("feuil3").Range("C" & Rows.Count).End(xlUp).Row
            If Cells(2, 7).Value = Worksheets("feuil3").Cells(i, 3).Value Then
                Cells(4, 5).Value = Worksheets("feuil3").Range("D" & i).MergeArea.Cells(1, 1).Value 'récupère la valeur de la cellule fusionner
                Exit For
            End If
          Next
        End If
     
    End Sub

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut
    Saluuuut gnain,

    le problème c'est que dans les mêmes feuilles 1 et 2 j'ai un autre code nommé Private sub worksheet_change du coup on m'affiche ce message

    que faire ?
    Images attachées Images attachées  

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut
    Voilà les deux codes que je veux éxecuter séparemment dans la même page , ils ont le même nom :


    Code vba : 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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim txt As String
    If Target.Row > 1 Then
       For i = 2 To 4
          txt = txt & Trim("" & Cells(Target.Row, 1).Offset(0, i))
      Next
    End If
    If Len(txt) > 1 Then MsgBox "Erreur, veuillez remplir une seule case par ligne !"
    End Sub
     
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Address = "$F$3" Then 'F3 est la liste
          For i = 2 To Worksheets("Responsable").Range("C" & Rows.Count).End(xlUp).Row
            If Cells(3, 6).Value = Worksheets("Responsable").Cells(i, 3).Value Then
                Cells(4, 3).Value = Worksheets("Responsable").Range("D" & i).MergeArea.Cells(1, 1).Value 'récupère la valeur de la cellule fusionner
                Exit For
            End If
          Next
        End If
     
    End Sub

  8. #8
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par rihab92 Voir le message
    Voilà les deux codes que je veux éxecuter séparemment dans la même page , ils ont le même nom :
    il faut les mettres dans le même

    Code vba : 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 txt As String
    If Target.Row > 1 Then
       For i = 2 To 4
          txt = txt & Trim("" & Cells(Target.Row, 1).Offset(0, i))
      Next
    End If
    If Len(txt) > 1 Then MsgBox "Erreur, veuillez remplir une seule case par ligne !"
     
        If Target.Address = "$F$3" Then 'F3 est la liste
          For i = 2 To Worksheets("Responsable").Range("C" & Rows.Count).End(xlUp).Row
            If Cells(3, 6).Value = Worksheets("Responsable").Cells(i, 3).Value Then
                Cells(4, 3).Value = Worksheets("Responsable").Range("D" & i).MergeArea.Cells(1, 1).Value 'récupère la valeur de la cellule fusionner
                Exit For
            End If
          Next
        End If
     
    End Sub

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut
    Saluut gnain,

    le problème c'est qu'ils sont éxécutés en même temps , le message d'erreur du premier code "Erreur , veuillez remplir une seule case par ligne!" s'éxecute automatiquement même si on n'a pas rempli deux cases par ligne

  10. #10
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    et si tu ferait passer la cellule F3 en priorité de cette manière

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Address = "$F$3" Then 'F3 est la liste
          For i = 2 To Worksheets("Responsable").Range("C" & Rows.Count).End(xlUp).Row
            If Cells(3, 6).Value = Worksheets("Responsable").Cells(i, 3).Value Then
                Cells(4, 3).Value = Worksheets("Responsable").Range("D" & i).MergeArea.Cells(1, 1).Value 'récupère la valeur de la cellule fusionner
                Exit For
            End If
          Next
    else
     
        Dim txt As String
        If Target.Row > 1 Then
           For i = 2 To 4
              txt = txt & Trim("" & Cells(Target.Row, 1).Offset(0, i))
          Next
     
        End If
     
        If Len(txt) > 1 Then MsgBox "Erreur, veuillez remplir une seule case par ligne !"
     
    End If
     
    End Sub

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut
    gnain toujours le même problème , ils s'éxecutent en même temps

  12. #12
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Ils ne peuvent s'éxecuter en même temps car c'est une condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
     
            If Target.Address = "$F$3" Then 'Si on change en F3
                  'Premier Code
                  For i = 2 To Worksheets .....
                  '...........
            else
                  '2e code
                  '.....
                  If Len(txt) > 1 Then MsgBox "Erreur, veuillez remplir une seule case par ligne !"
            end if
    end sub
    Ok je crois comprendre

    quand on change quelque chose en F3, ça doit faire changer une autre cellule, qui convient au 2e code.
    Est-ce celà?

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut
    le code du F3 est à part ça concerne une case à remplir à partir d'une liste déroulante

    le code d'erreur ça concerne d'autres cases éloignées à vérifier si on a rempli plus qu'une case,

    du coup ils ne sont pas liés du tout

    mais de cette manière que vous m'avez dite , ils s'éxecutent tous les deux en même temps alors que moi je n'ai voulu éxecuter que une

  14. #14
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Ce qui se passe selon moi c'est quand vous changer F3, il passe une première fois dans le code,
    le code fait changé une cellule dans la même feuille, donc il repasse une autre fois dans le code.
    Mais cette fois ci vu que ce n'est pas F3 qui vient de changé alors il entre dans le else.

    Il faudrait que tu suivre le code pas à pas pour voir si ce que je dit est vrai.

    il faudrait que tu ajoute un autre if,
    ex: si F3 fait changé la cellule D4

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
            If Target.Address = "$F$3" Then 'Si on change en F3
                  'Premier Code
                  For i = 2 To Worksheets .....
                  '...........
            else
                   If Target.Address = "$D$4" Then
                   else
                       '2e code
                       '.....
                        If Len(txt) > 1 Then MsgBox "Erreur, veuillez remplir une seule case par ligne !"
                  end if
            end if
    end sub

  15. #15
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut
    Saluuut gnain , j'ai essayé pas mal de fois mais ça n'a pas marché j n sais pas pourquoi ils s’exécutent tous les deux,

    Bon voilà ci joint le fichier excel et vous pouvez tester pour voir si ça fonctionne pcq je me suis vraiment bloquée

    N.B: j'ai changé l'emplacement de quelques cellules en comparaison avec le code

    Et merci d'avance
    Fichiers attachés Fichiers attachés

  16. #16
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    la solution était dans le dernier code que je t'ai donné.
    voici le code complet à mettre ce code dans feuil1 et feuil2.
    voilà ça fonctionne.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$F$3" Then 'F3 est la liste
          For i = 2 To Worksheets("Feuil3").Range("C" & Rows.Count).End(xlUp).Row
            If Cells(3, 6).Value = Worksheets("Feuil3").Cells(i, 3).Value Then
                Cells(4, 3).Value = Worksheets("Feuil3").Range("D" & i).MergeArea.Cells(1, 1).Value 'récupère la valeur de la cellule fusionner
                Exit For
            End If
          Next
    Else
         'la celule C4 est ou apparaît le nom
        If Target.Address = "$C$4" Then
             'on ne fait rien
        Else
            'on procède
           Dim txt As String
           If Target.Row > 1 Then
              For i = 2 To 4
                 txt = txt & Trim("" & Cells(Target.Row, 1).Offset(0, i))
             Next
     
           End If
     
           If Len(txt) > 1 Then MsgBox "Erreur, veuillez remplir une seule case par ligne !"
        End If
     
     
    End If
     
    End Sub
    Fichiers attachés Fichiers attachés

  17. #17
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut
    Et ben que dire sauf que je suis très reconnaissante pour vous

    Un très grand merci Gnain et je m'excuse

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

Discussions similaires

  1. Quel nom pour le contenu d'une case vide?
    Par byrdo dans le forum Débuter
    Réponses: 6
    Dernier message: 23/08/2012, 17h56
  2. [MooTools] Insertion fonction qui affiche le nom de l'image pour une galelrie photo :)
    Par bugordi dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 10/06/2009, 13h47
  3. Réponses: 1
    Dernier message: 26/01/2009, 16h07
  4. Réponses: 0
    Dernier message: 03/02/2008, 10h41
  5. [VBA-E] Dbl Click sur une case pour afficher le contenu d'un USERFORM
    Par dado91400 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 10h41

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