XL 2010 Comment alimenter automatiquement des cellules à partir d'une ligne sélectionnée dans un tableau?

ManuXZ

XLDnaute Junior
Bonjour,

Je souhaiterai à partir du tableau (feuille: BASE) d'une ligne que j'aurai sélectionnée (comprenant donc 3 colonnes) pouvoir alimenter automatiquement
les cellules B8 (Lieu spectacle) , B11 (adresse spectacle) et B14(métro) situées sur la feuille 'SAISIE"

J'avais pensé à 2 solutions:

1/ utiliser une listbox (que j'avais commencé à faire) mais ,déjà, elle m'affiche que la 1ère colonne du tableau...:-((
car lorsque je crée ma listbox (via validation données) en lui référençant donc les 3 colonnes de mon tableau , il m'affiche une erreur en m' indiquant qu'une seule colonne doit être référencée...???
a)- Bref, déjà un souci pour avoir une listbox multi-colonnes et autre pb:
b)- pouvoir ensuite alimenter , si c'est possible, chaque cellule dès que l'on clique sur la ligne désirée depuis la listbox

2/Laisser peut-être tomber la liste box...mais pouvoir tout simplement cliquer sur une ligne du tableau comprenant donc les 3 colonnes (A,B,C) et donc pouvoir alimenter automatiquement les cellules (B8, B11, B14)

je vous remercie bcp pour votre aide !!!
Manu
 

Pièces jointes

  • Liste-THEATRES.xlsm
    39.4 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Manu,
J'ai opté pour votre seconde hypothèse. Il suffit de cliquer sur une ligne de Base pour remplir Saisie. Avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A:C]) Is Nothing Then
        If Target = "" Then Exit Sub
        Dim L%: L = Target.Row
        With Sheets("SAISIE")
            .[B8] = Cells(L, "A")
            .[B11] = Cells(L, "B")
            .[B14] = Cells(L, "C")
            .Select
        End With
    End If
Fin:
End Sub
 

Pièces jointes

  • Liste-THEATRES.xlsm
    39.1 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Peut être plus ergonomique.
Dans la feuille base on clique sur une ligne, celle ci est mémorisée mais on ne va pas automatiquement sur la feuille Saisie, on peut donc changer de ligne.
La validation se fera quand on sélectionnera la feuille BASE. Avec :
VB:
Feuille Base :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A:C]) Is Nothing Then
        If Target = "" Then Exit Sub
        [D:D].ClearContents
        Cells(Target.Row, "D") = "x"
    End If
Fin:
End Sub
Feuille Saisie :
Sub Worksheet_Activate()
    On Error GoTo FinActivate
    Dim L%: L = Application.Match("x", Sheets("BASE").[D:D], 0)
    With Sheets("BASE")
        [B8] = .Cells(L, "A")
        [B11] = .Cells(L, "B")
        [B14] = .Cells(L, "C")
    End With
FinActivate:
End Sub
 

Pièces jointes

  • Liste-THEATRES V2.xlsm
    41 KB · Affichages: 4

ManuXZ

XLDnaute Junior
Bonjour Manu,
J'ai opté pour votre seconde hypothèse. Il suffit de cliquer sur une ligne de Base pour remplir Saisie. Avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A:C]) Is Nothing Then
        If Target = "" Then Exit Sub
        Dim L%: L = Target.Row
        With Sheets("SAISIE")
            .[B8] = Cells(L, "A")
            .[B11] = Cells(L, "B")
            .[B14] = Cells(L, "C")
            .Select
        End With
    End If
Fin:
End Sub
MERCI INIFINIMENT Sylvanu !!! , je me prenais la tête depuis tôt ce matin avec ce pb !
Effectivement j'hésitais avec les listbox ...peut-être plus compliqué à faire ??? mais le principal c'est que cela fonctionne ...par contre, je ne vois pas ta macro., du moins je l'ai vu quelque part mais je ne me souviens plus où ??? (en fait c'est un truc du genre avec liste des évènenemts: change,.click,....???)
En tout cas, Quelle maitrise du produit !!!:-0👏👏👏
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Ce sont des macros événementielles, donc elles sont dans les feuilles et non dans un module standard.
1709131637242.png
 

ManuXZ

XLDnaute Junior
bsoir,
désolé de t'embêter encore...
j'ai utilisé une listbox pour le champ "entrer le nom du site" mais les données dans la listbox sont tellement petits qu'il faut une loupe pour les voir....!!! , existe t'il un moyen d'agrandir les caractères de la liste ? j'ai défini ma liste dans la feuille CENTRE (j'ai agrandi la taille de la police mais cela n'a rien changé)
Merci.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
1- Si les caractères sont vraiment trop petit alors c'est que vous parlez probablement d'un menu déroulant et non d'une listbox.
2- Si vous teniez à votre première hypothèse alors pourquoi laisser bosser un bénévole sur votre seconde idée ? ( question intéressante n'est ce pas ? )

En PJ un essai avec une ListBox. Il suffit de cliquer sur B8 de Saisie et de choisir le lieu.

NB: Dans Base la ligne 39 est en erreur, je l'ai modifiée pour avoir au moins une chaine.
 

Pièces jointes

  • Liste-THEATRES V3.xlsm
    44.5 KB · Affichages: 2
Dernière édition:

ManuXZ

XLDnaute Junior
Re,
1- Si les caractères sont vraiment trop petit alors c'est que vous parlez probablement d'un menu déroulant et non d'une listbox.
2- Si vous teniez à votre première hypothèse alors pourquoi laisser bosser un bénévole sur votre seconde idée ? ( question intéressante n'est ce pas ? )

En PJ un essai avec une ListBox. Il suffit de cliquer sur B8 de Saisie et de choisir le lieu.

NB: Dans Base la ligne 39 est en erreur, je l'ai modifiée pour avoir au moins une chaine.

Désolé mais je ne maitrise pas tout comme vous sur Excel....:-((
Comme je vous le disais dans mon 1er post , effectivement j'hésitais entre les 2 solutions mais c'est vous même qui m'aviez préconisé de prendre la seconde solution (avec le tableau) (solution qui fonctionne impec !!!)
mais comme auparavant, comme vous l'avez vu ds ma 1ère version , j'avais réussi à mettre une petite liste par rapport au champ (sélection du Centre) , liste que je trouvais trop petite mais en fait d'après vous ce n'était pas une listbox mais une liste déroulante... (je m'y perds un peu ds ces notions !!!)
(je l'ai obtenu en cliquant sur le menu " Données/Validation des données/ et une fenêtre s'affiche (et l'on choisit autoriser: liste) pour moi j'étais persuadé que j'avais bien crée une listbox...:)) .
et de plus, comme je souhaitais faire la même chose pour le champ suivant (lieu du spectacle) mais je n'arrivais pas à mettre les 3 colonnes dans ma liste correspondant aux 3 colonnes de mon tableau ...!!!

Bref, la solution des listbox me parait peut-être plus facile, ergonomique pour l'utilisateur (qu'en pensez-vous ?) , j'ai donc refait le même principe sur votre exemple avec le champ (selection du centre) et c'est SUPER !!!

Rem: j'ai juste remarqué un comportement bizarre (aléatoire) :eek:n n'obtient pas tjrs la liste en cliquant sur le champ , parfois il faut cliquer sur la cellule d'à côté puis revenir sur le champ, de nouveau cliquer et cette fois-ci la liste s'affiche bien, je ne sais pas si cela le fait chez vous ?
Encore MERCI pour votre aide précieuse
Bonne soirée
Manu
 

Pièces jointes

  • Liste-THEATRES V3 (4).xlsm
    52.3 KB · Affichages: 5

ManuXZ

XLDnaute Junior
;
Non, c'est justement l'utiité de la ligne : [C7].Select qui déselectinne la cellule acitve de façon à pouvoir la recliquer ensuite sans souci.
Ah ok!
Je voulais savoir s'il existait une fonction qui permettrait de trier la listbox (ds les propriétés je n'ai pas vu et cherché sur le forum non plus) sans être obligé à chaque fois de trier la source (tableau lors par ex d'ajout de nouvelles lignes) ? ou faudra- t'il passer obligatoirement par du code vba ?
 

Discussions similaires

Statistiques des forums

Discussions
312 534
Messages
2 089 383
Membres
104 152
dernier inscrit
sabalex