XL 2013 Menu déroulant et affichage selon un onglet

  • Initiateur de la discussion Initiateur de la discussion Roseline
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Roseline

XLDnaute Occasionnel
Bonjour,
J'ai un fichier qui contient plusieurs onglets. J'ai ajouté un "cumulatif" et c'est à cet endroit que j'ai besoin de votre aide.
Je désire sélectionner mon client dans la cellule en rouge D2 et en faisant cette sélection, j'ai besoin que la fiche complète du client choisi s'affiche, donc toutes les lignes et les colonnes complétées de A à C. Il y a des ajouts sur chacun des onglets à tous les jours donc il faut toujours afficher jusqu'à la dernière ligne.
Par exemple, si on écrit dans l'onglet Cumulatif, cellule D2 le nom Blouin, je devrais voir apparaitre toute l'information que je retrouve dans l'onglet Blouin, si c'est Gauthier ce sera les informations dans la fiche de Gauthier et ainsi de suite.
Merci de votre aide.
 

Pièces jointes

laurent950

XLDnaute Barbatruc
Bonsoir,

VBA à copier dans la Feuille (Cumulatif) du Module : Microsoft Excel Objet

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
Me.Range(Me.Cells(3, 1), Me.Cells(Me.Cells(65536, 1).End(xlUp).Row + 1, 3)).Clear
Dim t() As Variant
Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name = Me.Cells(2, 4).Value Then
            t = ws.Range(ws.Cells(3, 1), ws.Cells(ws.Cells(65536, 1).End(xlUp).Row, 3))
            Me.Cells(3, 1).Resize(UBound(t, 1), UBound(t, 2)) = t
            Exit For
        End If
    Next ws
Erase t
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
 

Roseline

XLDnaute Occasionnel
Bonsoir,

VBA à copier dans la Feuille (Cumulatif) du Module : Microsoft Excel Objet

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
Me.Range(Me.Cells(3, 1), Me.Cells(Me.Cells(65536, 1).End(xlUp).Row + 1, 3)).Clear
Dim t() As Variant
Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name = Me.Cells(2, 4).Value Then
            t = ws.Range(ws.Cells(3, 1), ws.Cells(ws.Cells(65536, 1).End(xlUp).Row, 3))
            Me.Cells(3, 1).Resize(UBound(t, 1), UBound(t, 2)) = t
            Exit For
        End If
    Next ws
Erase t
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Merci pour votre aide, j'ai ajusté le code avec ma programmation et mon fichier et tout fonctionne a merveille. J'aimerais juste que ce soit centré dans mes cellules et je n'y arrive pas. Pouvez-vous me donner un autre ti coup de main svp.
 

laurent950

XLDnaute Barbatruc
Bonjour,

J'aimerais juste que ce soit centré dans mes cellules et je n'y arrive pas

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
Me.Range(Me.Cells(3, 1), Me.Cells(Me.Cells(65536, 1).End(xlUp).Row + 1, 3)).Clear
Dim t() As Variant
Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name = Me.Cells(2, 4).Value Then
            t = ws.Range(ws.Cells(3, 1), ws.Cells(ws.Cells(65536, 1).End(xlUp).Row, 3))
            Me.Cells(3, 1).Resize(UBound(t, 1), UBound(t, 2)) = t
            Me.Range(Me.Cells(3, 1), Me.Cells(Me.Cells(65536, 1).End(xlUp).Row + 1, 1)).HorizontalAlignment = xlLeft
            Me.Range(Me.Cells(3, 2), Me.Cells(Me.Cells(65536, 1).End(xlUp).Row + 1, 3)).HorizontalAlignment = xlCenter
            Exit For
        End If
    Next ws
Erase t
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
 

Roseline

XLDnaute Occasionnel
Bonjour,



VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
Me.Range(Me.Cells(3, 1), Me.Cells(Me.Cells(65536, 1).End(xlUp).Row + 1, 3)).Clear
Dim t() As Variant
Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name = Me.Cells(2, 4).Value Then
            t = ws.Range(ws.Cells(3, 1), ws.Cells(ws.Cells(65536, 1).End(xlUp).Row, 3))
            Me.Cells(3, 1).Resize(UBound(t, 1), UBound(t, 2)) = t
            Me.Range(Me.Cells(3, 1), Me.Cells(Me.Cells(65536, 1).End(xlUp).Row + 1, 1)).HorizontalAlignment = xlLeft
            Me.Range(Me.Cells(3, 2), Me.Cells(Me.Cells(65536, 1).End(xlUp).Row + 1, 3)).HorizontalAlignment = xlCenter
            Exit For
        End If
    Next ws
Erase t
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Merci beaucoup Laurent950, vous m'avez été d'une aide très précieuse.
Bonne journée à vous
 

Discussions similaires

Réponses
10
Affichages
444
Réponses
7
Affichages
315
Réponses
10
Affichages
270
Réponses
1
Affichages
281
Réponses
17
Affichages
797
Réponses
5
Affichages
256