Afficher contenu cellule dans un Label

Bonjour,

J'ai un petit soucis pour afficher le contenu d'une cellule " D4" dans un " Label " en fonction d'une selection dans une ListBox.

Si je choisis " a " dans la listbox, J'ai un bouton pour "Valider" ce choix, une fois le choix valider, j'aimerais afficher dans un Label, le contenu de la cellule "D4 "
Si je choisis " b " ce qui se trouve en " D5" doit s'afficher.

Mon code :

Private Sub CommandButton1_Click()
If ListBox1.ListIndex = 0 Then
Label1.Caption = "Range(D4)"
If ListBox1.ListIndex = 1 Then
Label1.Caption = "Range(D5)"
End If
End If
End Sub

Private Sub UserForm_Initialize()
    ListBox1.ColumnHeads = False
    ListBox1.RowSource = "Feuil1!C3:C7"
End Sub


J'ai déjà fait pas mal de recherche sur le net .

Merci bien et bon samedi



--
"Je connaissais un sportif qui prétendait avoir plus de ressort que sa montre. Pour le prouver, il a fait la course contre sa montre."

10 réponses

  1. Contributeur
    Bonjour,

    Ne pas mettre les " " sinon c'est une chaine.
    Tu peux essayer aussi avec :
    If ListBox1.ListIndex < 2 Then
    Label1.Caption = [D4].Offset(CLng(ListBox1.ListIndex), 0)
    endif 


    eric
    0
    1. Modérateur
      Merci cela marche.

      J'ai essayer d'ajouter la même chose si " B " est choisi mais " ça marche pôô ! )

      Private Sub CommandButton1_Click()
      If ListBox1.ListIndex < 2 Then
      Label1.Caption = [D4].Offset(CLng(ListBox1.ListIndex), 0)
      If ListBox1.ListIndex < 3 Then
      Label1.Caption = [D5].Offset(CLng(ListBox1.ListIndex), 1)
      End If
      End If
      End Sub


      De plus, je dois cliquer dans ma listbox pour surligner le choix, je pense qu'il doit y avoir un moyen pour éviter cela.

      0
      1. Contributeur
        Label1.Caption = [D4].Offset(CLng(ListBox1.ListIndex), 0)
        te fait les 2 cas, pas besoin d'ajouter de tests.
        [D4].Offset(ligne, colonne) te crée un décalage de la référence D4.
        - si ligne=0 => [D4].Offset(0, 0) => D4 (si colonne=0)
        - si ligne=1 => [D4].Offset(1, 0) => D5
        - etc

        eric

        edit: je crois que j'ai répondu à coté...
        Que veux tu dire par J'ai essayer d'ajouter la même chose si " B " est choisi ?
        - si ligne=1 et colonne =1 => [D4].Offset(1, 1) => E5
        Les offset peuvent être négatif pour décaler à gauche ou au-dessus.

        Jamais tu ne répondras à un mp non sollicité...
        Bon, ça c'est fait.
        0
        1. Modérateur
          Re,

          Donc, si je sélectionne A, cela renvoi l'affichage de D4, cela marche.
          Si je déroule et choisis B, cela doit me renvoyer l'affichage de D5.

          Private Sub CommandButton1_Click()
          If ListBox1.ListIndex = 0 Then
          Label1.Caption = [D4].Offset(CLng(ListBox1.ListIndex), 0)
          If ListBox1.ListIndex = 1 Then
          Label1.Caption = [D5].Offset(CLng(ListBox1.ListIndex), 1)
          End If
          End If
          End Sub

          0
          1. Contributeur
            Si tu fais autant de test que de valeur dans ta liste pas besoin d'utiliser offset.
            soit :
            If ListBox1.ListIndex = 0 Then
            Label1.Caption = [D4]
            elseIf ListBox1.ListIndex = 1 Then
            Label1.Caption = [D5]
            End If

            soit (tous les cas sont traités en 1 ligne) :
            If ListBox1.ListIndex <2 Then
            Label1.Caption = [D4].Offset(CLng(ListBox1.ListIndex), 0) 
            End If
            Et si tu passes à 5 choix tu as juste à changer <2 en <5
            eric
            0
          2. Modérateur
            Merciiii, cela marche très bien

            Avec cela je comprend comment afficher ce que je souhaite dans le label, y compris ce qui se trouve dans plusieurs cellules.

            Private Sub CommandButton1_Click()
            If ListBox1.ListIndex = 0 Then
            Label1.Caption = [D4] & [E4]
            ElseIf ListBox1.ListIndex = 1 Then
            Label1.Caption = [D5] & [E5]
            End If
            End Sub


            Par contre, il y a un moyen lorsque l'on selectionne une ligne dans la listbox ( a par exemple ) de ne pas avoir à re-cliquer dessus pour la selectionner ?
            0
          3. Contributeur
            Ben j'aurais tendance à dire que quand c'est sélectionné ça le reste
            mais comme il n'y a pas de fichier de test...
            eric
            0
          4. Modérateur
            C'est ok, cela venait que ma listbox avait des dimensions trop petites !!!
            0
        2. Modérateur
          Suite à cela , j'ai rajouter une textbox pour y saisir un nombre et un autre bouton .
          Comment faire pour enregistrer les informations contenus dans mon label et cette textbox dans un fichier excel dont le nom serait celui du nombre contenu dans la textbox de façon que à chaque fois que le nombre saisi dans la textbox génère un nouveau fichier excel ?

          Ce fichier excel se présenterait sous la forme suivante :
          A1 = serait un texte prédéfini
          A2 = nombre contenu dans la textbox
          B1 = serait un texte prédéfini
          B2 = texte contenu dans le label

          Et comment générer ce fichier sans demande de confirmation ?

          J'ai parcouru différents sites et tutos.

          Merci
          0
          1. Contributeur
            Re,

            [A2]=textbox1
            chemin = "d:\tmp\"
            Application.DisplayAlerts = False
            ActiveWorkbook.SaveAs Filename:=chemin & [Feuil1!A2] & ".xls", FileFormat:=xlNormal
            Application.DisplayAlerts = True
            

            eric
            0
            1. Modérateur
              Re, et bonjour

              Je me suis servi d'une macro pour essayer la mise en page de ce fichier excel généré, cela marche mais je n'arrive pas à le nommer correctement, cela me met une erreur:

              Le code qui fonctionne si dans :
                  ActiveWorkbook.SaveAs Filename:="C:\Archives_2013\new.xlsx", _
                      FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 

              je met " new " comme nom.

              Si je met cela :
              ActiveWorkbook.SaveAs Filename:="C:\Archives_2013\& [Feuil1!A2] & ".xls",
              FileFormat:=xlNormal
              Application.DisplayAlerts = True

              Ce code ne marche pas.

              Mon code complet pour la création du fichier :

              Private Sub CommandButton2_Click()
              [A2] = TextBox1
              chemin = "C:\tmp\"
              ' saveexcel Macro
              '
              
              '
                  Workbooks.Add
                  With ActiveSheet.PageSetup
                      .PrintTitleRows = ""
                      .PrintTitleColumns = ""
                  End With
                  ActiveSheet.PageSetup.PrintArea = ""
                  With ActiveSheet.PageSetup
                      .LeftHeader = ""
                      .CenterHeader = ""
                      .RightHeader = ""
                      .LeftFooter = ""
                      .CenterFooter = ""
                      .RightFooter = ""
                      .LeftMargin = Application.InchesToPoints(0.7)
                      .RightMargin = Application.InchesToPoints(0.7)
                      .TopMargin = Application.InchesToPoints(0.75)
                      .BottomMargin = Application.InchesToPoints(0.75)
                      .HeaderMargin = Application.InchesToPoints(0.3)
                      .FooterMargin = Application.InchesToPoints(0.3)
                      .PrintHeadings = False
                      .PrintGridlines = False
                      .PrintComments = xlPrintNoComments
                      .PrintQuality = 1200
                      .CenterHorizontally = False
                      .CenterVertically = False
                      .Orientation = xlLandscape
                      .Draft = False
                      .PaperSize = xlPaperA4
                      .FirstPageNumber = xlAutomatic
                      .Order = xlDownThenOver
                      .BlackAndWhite = False
                      .Zoom = 100
                      .PrintErrors = xlPrintErrorsDisplayed
                      .OddAndEvenPagesHeaderFooter = False
                      .DifferentFirstPageHeaderFooter = False
                      .ScaleWithDocHeaderFooter = True
                      .AlignMarginsHeaderFooter = True
                      .EvenPage.LeftHeader.Text = ""
                      .EvenPage.CenterHeader.Text = ""
                      .EvenPage.RightHeader.Text = ""
                      .EvenPage.LeftFooter.Text = ""
                      .EvenPage.CenterFooter.Text = ""
                      .EvenPage.RightFooter.Text = ""
                      .FirstPage.LeftHeader.Text = ""
                      .FirstPage.CenterHeader.Text = ""
                      .FirstPage.RightHeader.Text = ""
                      .FirstPage.LeftFooter.Text = ""
                      .FirstPage.CenterFooter.Text = ""
                      .FirstPage.RightFooter.Text = ""
                  End With
                  With ActiveSheet.PageSetup
                      .PrintTitleRows = ""
                      .PrintTitleColumns = ""
                  End With
                  ActiveSheet.PageSetup.PrintArea = ""
                  With ActiveSheet.PageSetup
                      .LeftHeader = ""
                      .CenterHeader = ""
                      .RightHeader = ""
                      .LeftFooter = ""
                      .CenterFooter = ""
                      .RightFooter = ""
                      .LeftMargin = Application.InchesToPoints(0.7)
                      .RightMargin = Application.InchesToPoints(0.7)
                      .TopMargin = Application.InchesToPoints(0.75)
                      .BottomMargin = Application.InchesToPoints(0.75)
                      .HeaderMargin = Application.InchesToPoints(0.3)
                      .FooterMargin = Application.InchesToPoints(0.3)
                      .PrintHeadings = False
                      .PrintGridlines = False
                      .PrintComments = xlPrintNoComments
                      .PrintQuality = 1200
                      .CenterHorizontally = False
                      .CenterVertically = False
                      .Orientation = xlLandscape
                      .Draft = False
                      .PaperSize = xlPaperA4
                      .FirstPageNumber = xlAutomatic
                      .Order = xlDownThenOver
                      .BlackAndWhite = False
                      .Zoom = 100
                      .PrintErrors = xlPrintErrorsDisplayed
                      .OddAndEvenPagesHeaderFooter = False
                      .DifferentFirstPageHeaderFooter = False
                      .ScaleWithDocHeaderFooter = True
                      .AlignMarginsHeaderFooter = True
                      .EvenPage.LeftHeader.Text = ""
                      .EvenPage.CenterHeader.Text = ""
                      .EvenPage.RightHeader.Text = ""
                      .EvenPage.LeftFooter.Text = ""
                      .EvenPage.CenterFooter.Text = ""
                      .EvenPage.RightFooter.Text = ""
                      .FirstPage.LeftHeader.Text = ""
                      .FirstPage.CenterHeader.Text = ""
                      .FirstPage.RightHeader.Text = ""
                      .FirstPage.LeftFooter.Text = ""
                      .FirstPage.CenterFooter.Text = ""
                      .FirstPage.RightFooter.Text = ""
                  End With
                  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                  With Selection.Borders(xlEdgeLeft)
                      .LineStyle = xlContinuous
                      .ColorIndex = 0
                      .TintAndShade = 0
                      .Weight = xlMedium
                  End With
                  With Selection.Borders(xlEdgeTop)
                      .LineStyle = xlContinuous
                      .ColorIndex = 0
                      .TintAndShade = 0
                      .Weight = xlMedium
                  End With
                  With Selection.Borders(xlEdgeBottom)
                      .LineStyle = xlContinuous
                      .ColorIndex = 0
                      .TintAndShade = 0
                      .Weight = xlMedium
                  End With
                  With Selection.Borders(xlEdgeRight)
                      .LineStyle = xlContinuous
                      .ColorIndex = 0
                      .TintAndShade = 0
                      .Weight = xlMedium
                  End With
                  Selection.Borders(xlInsideVertical).LineStyle = xlNone
                  Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
                  Range("C4").Select
                  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                  With Selection.Borders(xlEdgeLeft)
                      .LineStyle = xlContinuous
                      .ColorIndex = 0
                      .TintAndShade = 0
                      .Weight = xlMedium
                  End With
                  With Selection.Borders(xlEdgeTop)
                      .LineStyle = xlContinuous
                      .ColorIndex = 0
                      .TintAndShade = 0
                      .Weight = xlMedium
                  End With
                  With Selection.Borders(xlEdgeBottom)
                      .LineStyle = xlContinuous
                      .ColorIndex = 0
                      .TintAndShade = 0
                      .Weight = xlMedium
                  End With
                  With Selection.Borders(xlEdgeRight)
                      .LineStyle = xlContinuous
                      .ColorIndex = 0
                      .TintAndShade = 0
                      .Weight = xlMedium
                  End With
                  Selection.Borders(xlInsideVertical).LineStyle = xlNone
                  Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
                  Range("A4").Select
                  [A4] = TextBox1
                  Range("A9").Select
                  ChDir "C:\Archives_2013"
                  ActiveWorkbook.SaveAs Filename:="C:\Archives_2013\new.xlsx", _
                      FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
              End Sub


              0
              1. Contributeur
                Bonjour,

                le principe :
                "chaine1" & variable & "chaine2"
                Il faut penser à refermer les " pour les chaines.

                ActiveWorkbook.SaveAs Filename:="C:\Archives_2013\" & [Feuil1!A2] & ".xls",
                FileFormat:=xlNormal
                Application.DisplayAlerts = True

                eric
                Jamais tu ne répondras à un mp non sollicité...
                Bon, ça c'est fait.
                0
                1. Modérateur
                  Merci Eric

                  J'ai ajouter une autre userform qui est appelé lors du clic sur le bouton pour enregistrer qui s'affiche, celle-ci contient 2 boutons.
                  Un qui enregistre le fichier excel et le deuxième qui masque cette seconde userform si on ne veut pas valider cet enregistrement.
                  0
                  1. Modérateur
                    Sur ce code :
                        Selection.Borders(xlInsideVertical).LineStyle = xlNone
                        Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
                        Range("A4").Select
                        [A4] = User.TextBox1
                        Range("A9").Select
                        ChDir "C:\Archives_2013"
                        ActiveWorkbook.SaveAs Filename:="C:\Archives_2013\" & [Feuil1!A4] & ".xlsx", _
                            FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                        sauvegardefichier.Hide  


                    J'ai ajouté un code pour fermer le fichier excel mais j'ai du me planter, cela m'a fermer mon fichier d'origine et non le nouveau fichier créé et de plus sans sauvegarde, j'ai du tout me retaper (((

                    ThisWorkbook.Close SaveChanges:=False


                    Mon erreur doit surement venir de " ThisWorkbook " ?
                    0
                    1. Modérateur
                      C'est ok :
                          Selection.Borders(xlInsideVertical).LineStyle = xlNone
                          Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
                          Range("A4").Select
                          [A4] = User.TextBox1
                          Range("A9").Select
                          ChDir "C:\Archives_2013"
                          ActiveWorkbook.SaveAs Filename:="C:\Archives_2013\" & [Feuil1!A4] & ".xlsx", _
                              FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                              ActiveWindow.Close
                          sauvegardefichier.Hide
                      0
                    2. Contributeur
                      Thisworkbook désigne le classeur ayant le code.
                      Activeworkbook le classeur actif.
                      Mais si tu laisses la main à l'utilisateur le classeur actif n'est peut-être plus celui que tu penses.

                      Je te conseille plutôt de faire comme ça (sauf si tu veux vraiment thisworkbook qui reste utile !) :
                      Dim wb1 As Workbook
                      Set wb1 = Workbooks.Add
                      Après tu désignes toujours ton classeur par wb1 :
                      wb1.activate
                      wb1.name
                      wb1.close
                      etc

                      Et je te conseille de faire pareil pour les feuilles si tu travailles sur plusieurs à la fois :
                      Dim shDest as worksheet
                      set shDest = worksheets("Feuil1")
                      C'est plus léger que d'écrire tout le temps worksheets("Feuil1")... et tu sais à quelle feuille tu t'adresse même si elle n'est pas active :
                      shDest.[A1] = var1

                      Et dans les précautions et bonnes habitudes je te conseille d'aller dans les options de VBE et d'activer 'Déclaration des variables obligatoires'
                      Ca t'ajoute Option Explicit en haut de chaque feuille de code.
                      Ca t'oblige à déclarer toutes les variables, et tant qu'à faire les typer au passage (as string, as long, ...).
                      Ca évite la recherche de bugs très difficile lorsque que tu fais une faute de frappe sur un nom de variable.

                      eric
                      0