Rechercher lignes en fonction d'un chiffre dans une colonne

Bonjour,

J'ai un tableau dans le premier onglet. Dans ce tableau en colonne AC, j'ai des numéros de semaines.

Ma question est la suivante:

Dans le deuxième onglet je voudrais qu'en tapant un chiffre (n°de semaine) dans la cellule D2, cela m'affiche dessous TOUTES les lignes comportant ce numéro de semaine de la colonne AC de l'onglet 1.

Suis-je assez clair? :)

Merci d'avance pour votre aide

Bonjour Arturia, bonjour le forum,

Peut-être comme ça :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)

If Target.Address <> "$D$2" Then Exit Sub ' si le changement a lieu ailleurs qu'en D2, sort de la procédure
Set OS = Worksheets("Feuil1") 'définit l'onglet OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Me.Rows(3 & ":" & Application.Rows.Count).ClearContents 'efface les anciennes données de l'onglet OE
If Target.Value = "" Then Exit Sub 'si D2 est effacée, sort de la procédure
For I = 2 To UBound(TV, 1) ' boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If TV(I, 29) = Target.Value Then 'condition : si la donnée ligne I colonne 12 de TV est égale à la valeur de la cellule modifiée (C2)
        K = K + 1 'incrémente K
        ReDim Preserve TL(1 To 29, 1 To K) ' redimensionne le tabeau de lignes TL (12 lignes, K colonnes)
        For J = 1 To UBound(TV, 2) 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
            TL(J, K) = TV(I, J) 'récupère dans la ligne J de TL la valeur de la donnéee colonne J de TV (=> Transposition)
        Next J 'prochaine colonne de la boucle 2
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
If K > 0 Then ' condition : si K est supérieure à zéro
    Me.Range("A3").Resize(K, 29).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé dans A4 de l'onglet OE
End If ' fin de la condition
End Sub

bonjour

une contribution sans VBA

les plages nécessaires au calcul sont nommées en dynamique

cordialement

6aturia.xlsx (99.95 Ko)

Merci beaucoup à tous les deux.

La solution sans VBA fonctionne bien.

Maintenant il faut que je regarde la macro VBA (je ne suis pas un spécialiste mais je vais chercher comment l'intégrer).

Je vous tiens au courant

Merci encore

Désolé,

je n'ai pas réussi à insérer le VBA dans mon fichier

Re,

Il est vrai que je navet pas précisé qu'il s'agissait de l'événementielle (Change) à placer dans le composant Feuil2(Feuil2). Ton fichier modifié en pièce jointe :

Merci beaucoup à tous les deux.

Cela fonctionne parfaitement. A moi de voir avec lequel travailler suivant les mises en formes à faire.

Merci encore

Bonjour Tulipe_4,

Je bosse sur ton fichier (je vais m'attaquer ensuite au fichier VBA..:)).

J'ai un soucis avec le tien. Si je modifie ou enlève des dates dans la colonne Z ou si je rajoute des lignes au tableau d'origine, ça ne fonctionne plus. Il ne retrouve pas toutes les lignes. (ex: j'ai mis des dates pour tomber sur la semaine 9 (4 au total) et il m'en trouve que 3. Et si je supprime des dates en colonne Z, il ne me retrouve plus rien...:(.

Merci pour ton aide

Bonjour ThauThème,

Je travaille sur ta proposition et j'ai un problème de format de date. Une fois les lignes importées sur la feuille1, les date en colonnes y et Z se retrouvent au format mm/jj/aaaa. J'ai voulu insérer dans ton programme "column("Z").Value = DateValue(TextBox1.Value) et column("Y").Value = DateValue(TextBox1.Value) mais je ne sais pas ou...Je sais je suis une bille en VBA...Mais j'apprends doucement...

Merci à toi

Bonjour le fil, bonjour le forum,

Je ne comprends pas ce que la TextBox1 vient faire là !?...

Essai comme ça:

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)

If Target.Address <> "$D$2" Then Exit Sub ' si le changement a lieu ailleurs qu'en D2, sort de la procédure
Set OS = Worksheets("Feuil1") 'définit l'onglet OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Me.Rows(3 & ":" & Application.Rows.Count).ClearContents 'efface les anciennes données de l'onglet OE
If Target.Value = "" Then Exit Sub 'si D2 est effacée, sort de la procédure
For I = 2 To UBound(TV, 1) ' boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If TV(I, 29) = Target.Value Then 'condition : si la donnée ligne I colonne 12 de TV est égale à la valeur de la cellule modifiée (C2)
        K = K + 1 'incrémente K
        ReDim Preserve TL(1 To 29, 1 To K) ' redimensionne le tabeau de lignes TL (12 lignes, K colonnes)
        For J = 1 To UBound(TV, 2) 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
            Select Case J 'agit en fonction de J
                Case 25, 26 'cas 25 et 26
                    'récupère dans la ligne J de TL la valeur de la date convertie en entier long en colonne J de TV (=> Transposition)
                    TL(J, K) = CLng(DateSerial(Year(TV(I, J)), Month(TV(I, J)), Day(TV(I, J))))
                Case Else 'tous les autres cas
                    TL(J, K) = TV(I, J) 'récupère dans la ligne J de TL la valeur de la donnée colonne J de TV (=> Transposition)
            End Select 'fin de l'action en fonction de J
        Next J 'prochaine colonne de la boucle 2
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
If K > 0 Then ' condition : si K est supérieure à zéro
    Me.Range("A3").Resize(K, 29).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé dans A4 de l'onglet OE
End If ' fin de la condition
End Sub

Le fichier :

7aturia-ep-v02.xlsm (98.17 Ko)

Nickel,

Merci beaucoup...

Rechercher des sujets similaires à "rechercher lignes fonction chiffre colonne"