Microsoft 365 Transfert données suivant choix dans combobox

62Flash

XLDnaute Nouveau
Bonjour à tous

J'ai construit un fichier de travail avec pour but :

Dans l'onglet RVG la combobox1 est alimentée par les Onglet aàpartir de "L1" et donc aussi les suivants.
J'aimerais que seulement les onglet qui commence par "L" soient concernés ( ajout dans le futur L4;L5;L6 etc)

Que lorsque que sélectionne dans la combobox par ex "L1" alors copier la colonne E5 et la coller dans RVG en B5,
ou que si je vais ouvrir directement l'onglet "L1" alors le même résultat

J'aimerai avoir aussi le même résultat pour chaque Onglet "L" svp

J'ai mis des commentaires dans le fichier joint

Merci pour votre aide dans ma démarche.

Dans l'attente de vous lire

Ps (je suis au balbutiement du vb)

62Flash
 

Pièces jointes

  • Regroupement V1.xlsm
    46.5 KB · Affichages: 5

62Flash

XLDnaute Nouveau
Bonjour Robert , Bonjour le Forum

Merci de ta réponse aussi rapide

J'ai compris ton principe pour la sélection des onglets dont "L" est présent, Le transfert par select case est nouveau pour moi.

Par contre si j'ajoute une nouvelle feuille "L4" par exemple pas de soucis pour la retrouver dans [D3] de RVG
Mais pas de transfert possible des données , je dois la programmer dans Private Sub Worksheet_Change(ByVal Target As Range)

Serait-il possible de rendre automatique cette action svp

Dernière question si je vais directement sur "L2" est-il possible de faire le transfert directement des données dans RVG ?

C'est à dire soit par [D3] ,soit par onglet "L2" directement

Merci de l'aide que tu m'as déjà apporté

62Flash
 

62Flash

XLDnaute Nouveau
Bonjour Robert, Bonjour le forum

Désolé Robert de ne t'avoir pas répondu avant, semaine compliquée au travail.

Suivant la remarque que tu as faite,
Je vais retravailler mon fichier perso pour te redonner les bonnes cellules à copiées dans la version Flash_ED_v01

Merci de ton (votre) aide

62Flash
 

62Flash

XLDnaute Nouveau
Bonsoir Robert Bonsoir le forum

J'ai retravaillé le fichier Flash_ED_v01 pour avoir les même cellule à copier sur chaque onglet "L"

J'ai pu supprimer la fonction "case" que je pense avoir compris.

Mis quelques commentaires (si vous pouvez me les corriger svp, merci)

Et modifier le code de la 'copie colle' .

Par contre en fouillant sur le(s) forum(s), j'ai essayer de faire cela.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$3" Then Exit Sub
 
    der_ligne = Worksheets(Target.Value).Range("E5").End(xlUp).Row.Copy
   
    Worksheets(Target.Value).Range("E5" & der_ligne) Worksheets("RVG").Range("B5") 
   
   
If Target.Value = "" Then Worksheets("RVG").Range("E5").ClearContents

End Sub
Hélas j'ai message d'erreur "Objet requis"
Merci de vos réponses
Et dans l'attente , je continue mes recherches
Bonne soirée
62Flash
 

62Flash

XLDnaute Nouveau
Bonjour le forum,
Bonjour Staple1600
Merci de m'avoir donné une solution.
J'ai déclaré la variable mais toujours le même soucis.
J'ai laissé la procédure en attente dans la feuille "RVB"

Mon fichier fonctionne avec une autre procédure.
J'aurais aimé utiliser la fonction der_ligne pour avoir un exemple
je souhaite remplacer (E5:E65) par E5 et der_ling pour avoir départ E5 jusqu’à la dernière cellule non vide.

Bonne fin de journée

62Flash
 

Pièces jointes

  • Flash_ED_v02.xlsm
    43 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

62Flash
Je vois pas la variable derl_ligne déclarée dans ton fichier, comme je te l'indiquais dans mon précédent message ... :rolleyes:
Logiquement , on aurait pu lire un truc dans ce genre dans ton fichier exemple
(si j'ai compris ce que tu veux faire)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim der_ligne As Long
If Target.Address <> "$D$3" Then Exit Sub
With Worksheets(Target.Value)
der_ligne = .Cells(Rows.Count, "E").Row
.Range("E5:E" & der_ligne).Copy Me.Range("B5")
End With
End Sub
 
Dernière édition:

62Flash

XLDnaute Nouveau
Bonsoir le fil
Bonsoir Staple1600
Oups, je n'ai pas mis le bon fichier Staple1600

J'ai compris la réflexion de der_ligne, par contre
VB:
.Range("E5:E" & der_ligne).Copy Me.Range("B5")

veux dire que la copie doit être transférer a partir de "E53" mais le Me.range (Me ; objet) reprend
Code:
Worksheets(Target.Value)
si j'ai bien compris !

J'ai 2 méthodes maintenant , et je te remercie de m'avoir répondu.

Je remercie aussi Robert pour sont aide.

Bonne soirée au fil.
62Flash
 

62Flash

XLDnaute Nouveau
bonjour à tous

N'ayant pas eu de réponses à m'a question, je relance ma demande.

J'ai aussi changé la partie "collage" car il y avait des formules dans le fichier que je voulais traiter .
donc le code est maintenant:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim der_ligne As Long
If Target.Address <> "$D$3" Then Exit Sub
With Worksheets(Target.Value)
der_ligne = .Cells(Rows.Count, "E").Row
.Range("E5:E" & der_ligne).Copy
End With
 Me.Range("B5").PasteSpecial Paste:=xlPasteValues
End Sub

est vous d'accord avec moi svp

Bonne journée à tous

62Flash
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, 62Flash
Je clos ce sujet qui n’intéresse personne
Attention, à ce genre de petite réflexion... (ca peut hérisser le poil)
Les réponses viennent selon un rythme propre à chaque répondeur ;)
(Y a pas qu'Excel dans la vie! Il ya la vie tout court)

Sinon pour la question, pusique tu parles de valeurs seules, une variante (et quelques ajouts)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim f As Worksheet, rng As Range
If Target.Address <> "$D$3" Then Exit Sub
If Target.Count = 1 Then
If Len(Target) > 0 Then
Set f = Worksheets(Target.Text)
Set rng = f.Range(f.Cells(5, "E"), f.Cells(Rows.Count, "E").End(3))
Me.Range("B5").Resize(rng.Rows.Count).Value = rng.Value
End If
End If
End Sub
 

62Flash

XLDnaute Nouveau
Bonjour le forum
Bonjour Staple1600
Désolé, il est vrais qu'après relecture de mon dernier post, je me suis emporté.
je suis d'accord avec toi sur le principe de la vie.
je suis en 3*8 est si problème de travail, je le laisse au travail.

J'ai regardé ton code, j'en comprends une partie et le reste à moi de le découvrir.

Je te remercie pour le code, et aussi pour ta remarque.

Pour mettre en résolu, j'ai trouvé

Bonne journée à toi (tous)
 

Discussions similaires