Afficher contenu cellule dans un Label
Fermé
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
-
16 févr. 2013 à 16:20
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 17 févr. 2013 à 17:04
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 17 févr. 2013 à 17:04
A voir également:
- Afficher contenu cellule dans un Label
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Verrouiller cellule excel - Guide
- Afficher calendrier outlook dans google agenda - Guide
10 réponses
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
16 févr. 2013 à 16:29
16 févr. 2013 à 16:29
Bonjour,
Ne pas mettre les " " sinon c'est une chaine.
Tu peux essayer aussi avec :
eric
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
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
5 072
16 févr. 2013 à 16:44
16 févr. 2013 à 16:44
Merci cela marche.
J'ai essayer d'ajouter la même chose si " B " est choisi mais " ça marche pôô ! )
De plus, je dois cliquer dans ma listbox pour surligner le choix, je pense qu'il doit y avoir un moyen pour éviter cela.
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.
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié par eriiic le 16/02/2013 à 17:19
Modifié par eriiic le 16/02/2013 à 17:19
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.
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.
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
5 072
16 févr. 2013 à 17:41
16 févr. 2013 à 17:41
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.
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
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
16 févr. 2013 à 18:48
16 févr. 2013 à 18:48
Si tu fais autant de test que de valeur dans ta liste pas besoin d'utiliser offset.
soit :
soit (tous les cas sont traités en 1 ligne) :
eric
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 IfEt si tu passes à 5 choix tu as juste à changer <2 en <5
eric
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
5 072
16 févr. 2013 à 19:21
16 févr. 2013 à 19:21
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.
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 ?
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 ?
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
16 févr. 2013 à 19:31
16 févr. 2013 à 19:31
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
mais comme il n'y a pas de fichier de test...
eric
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
5 072
16 févr. 2013 à 21:00
16 févr. 2013 à 21:00
C'est ok, cela venait que ma listbox avait des dimensions trop petites !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
5 072
16 févr. 2013 à 21:20
16 févr. 2013 à 21:20
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
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
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
16 févr. 2013 à 23:16
16 févr. 2013 à 23:16
Re,
eric
[A2]=textbox1 chemin = "d:\tmp\" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=chemin & [Feuil1!A2] & ".xls", FileFormat:=xlNormal Application.DisplayAlerts = True
eric
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
5 072
17 févr. 2013 à 15:15
17 févr. 2013 à 15:15
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 :
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 :
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
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié par eriiic le 17/02/2013 à 15:58
Modifié par eriiic le 17/02/2013 à 15:58
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.
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.
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
5 072
17 févr. 2013 à 16:08
17 févr. 2013 à 16:08
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.
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.
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
5 072
17 févr. 2013 à 16:36
17 févr. 2013 à 16:36
Sur ce code :
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 (((
Mon erreur doit surement venir de " ThisWorkbook " ?
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 " ?
irongege
Messages postés
40847
Date d'inscription
jeudi 1 novembre 2007
Statut
Modérateur
Dernière intervention
29 juin 2023
5 072
17 févr. 2013 à 16:54
17 févr. 2013 à 16:54
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
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
17 févr. 2013 à 17:04
17 févr. 2013 à 17:04
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 !) :
wb1.activate
wb1.name
wb1.close
etc
Et je te conseille de faire pareil pour les feuilles si tu travailles sur plusieurs à la fois :
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
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.AddAprè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