Plage de donnée

Bonjour à vous tous,

Je commence à me débrouiller en VBA, mais là je fais chou blanc. J'ai mis un fichier avec une description j'espère assez précise de ce que je veux. Résumer:

Dans mon userform, je veux sélectionner une plage de mois De : Novembre à Janvier par exemple, je veux que les colonnes de change automatique pour que seulement les données demander par l'utilisateur.

J'espère que c'est possible !

Merci d'avance pour vos réponses...

17demo.zip (10.91 Ko)

Bonsoir,

Tu adapteras à l'Useform si besoin

Private Sub Worksheet_Change(ByVal Target As Range)
''Macros par Claude Dubois pour "vinc87" Excel-Pratique le 18/02/10
Dim M1, M2
    If Not Application.Intersect(Target, Range("d1:d2")) Is Nothing Then
        Application.ScreenUpdating = False
        M1 = WorksheetFunction.Match(Range("d1"), Range("i5:t5"), 0) + 8
        M2 = WorksheetFunction.Match(Range("d2"), Range("i5:t5"), 0) + 8
        Range(Columns(9), Columns(20)).Hidden = True
        Range(Columns(M1), Columns(M2)).Hidden = False
    End If
End Sub

Amicalement

Claude

16vinc87-colonnes.zip (11.46 Ko)

Bonjour Claude,

Merci de ton aide. Autre petit besoin, dans ton exememple, les colonnes s'affichent dans l'ordre des mois, je voudrais ex si je sélectionne de déc à mars que je vois les colonnes dans cette ordre..

Est-ce possible ?

Merci encore !

re,

il faudrait trier horizontalement, je sais pas faire !

quel intérêt ?

Claude

L'intérêt : C'est que si je demande de Décembre à Février, je ne veux pas Mars, Avril, etc, mais bien Décembre, Janvier et Févirer...

On ne peut pas copier coller la colonne, je sais pas...

merci encore

re,

On répond gentiment S.T.P !

essaye:

Private Sub Worksheet_Change(ByVal Target As Range)
''Macros par Claude Dubois pour "vinc87" Excel-Pratique le 18/02/10
Dim M1, M2
        Application.ScreenUpdating = False
    If Not Application.Intersect(Target, Range("d1")) Is Nothing Then
    Application.EnableEvents = False
        Range("d2").ClearContents
        M1 = WorksheetFunction.Match(Range("d1"), Range("i5:t5"), 0) + 8
        Range(Columns(9), Columns(20)).Hidden = False
        Range(Columns(M1), Columns(20)).Cut
        Columns(9).Insert
    Application.EnableEvents = True
    End If
    If Not Application.Intersect(Target, Range("d2")) Is Nothing Then
        M1 = WorksheetFunction.Match(Range("d1"), Range("i5:t5"), 0) + 8
        M2 = WorksheetFunction.Match(Range("d2"), Range("i5:t5"), 0) + 8
        Range(Columns(9), Columns(20)).Hidden = True
        Range(Columns(M1), Columns(M2)).Hidden = False
    End If
End Sub

Claude

Bonjour Claude,

Je ne voulais pas paraître irrespectueux, je voulais simplement te dire l'intérêt de ce que je voulais sous forme de point. En me relisant, c'est vrai que ça avait l'air sec comme réponse. Vraiment Désolé. Je viens d'esseyer ta macro, ça marche, tu es un génie .

Il me reste à anlyser tout ça afin de devenir peut-être un jour au niveau...

Merci encore de ton aide précieuse !

Bonne journée !

Vincent

Ok, à +...

a resolu2
4gmao-di.xlsm (209.10 Ko)

Bonjour Claude,

Je m'adresse de nouveau à tes compétenses. Comment est-ce que je fais pour remplacer le range("d1") par range ("listbox1")?

M1 = WorksheetFunction.Match(Range("d1"), Range("i5:t5"), 0) + 8

M2 = WorksheetFunction.Match(Range("d2"), Range("i5:t5"), 0) + 8

Merci encore et bonne journée !

6controle-2.zip (26.65 Ko)
Rechercher des sujets similaires à "plage donnee"