EXTRAIRE dans 2 colonnes des lignes

Résolu/Fermé
Utilisateur anonyme - 10 juin 2019 à 19:01
 Utilisateur anonyme - 21 juin 2019 à 17:28
Bonjour,
Comment faire en vb dans Excel pour extraire des lignes en recherchant sur 2 colonnes?


En colonne C « N°Semaine/Lot » les 2 premiers chiffres correspondent à la semaine de fabrication.

Je voudrais extraire les Noix et ROSETTE ( colonneB"Produit") ayant 7 semaines de moins que la semaine actuelle :Nous sommes en sem 24
Donc 24-7=17 donc extraire toutes les semaines commençant par 17 et inférieur de la colonneC"N°Semaine/Lot"

Et aussi extraire les Bœufs(colonne B "Produit") ayant 11 semaines de moins que la semaine actuelle :
Donc 24-11=13 donc tous les bœufs commençant par 13 et inférieur toujours en colonne C"semaine"


Merci

Cordialement
Geoffroy
A voir également:

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 11 juin 2019 à 11:45
Bonjour,

En vba on boucle sur la colonne C et l'on met les résultats colonne F (a adapter):

Option Explicit
Private Sub CommandButton1_Click()
For_X_to_Next_Ligne
End Sub
Sub For_X_to_Next_Ligne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
Dim ns As Integer 'numero semaine
Dim nombre As Integer '2 caracteres à gauche
Dim result As Integer
ns = NoSem(Now)

    Set FL1 = Worksheets("Feuil1") 'adapter nom feuille
    NoCol = 3 'lecture de la colonne C
    For NoLig = 2 To Split(FL1.UsedRange.Address, "$")(4)
        Var = FL1.Cells(NoLig, NoCol)
      result = ns - 7
        nombre = Left(Var, 2)
        If nombre <= result Then
       If FL1.Cells(NoLig, NoCol - 1) = "Rosette" Or FL1.Cells(NoLig, NoCol - 1) = "Noix" Then
        FL1.Cells(NoLig, NoCol + 3) = "extraction 7" 'adapter colonne résultat
        End If
        End If
        result = ns - 11
        If nombre <= result Then
        If FL1.Cells(NoLig, NoCol - 1) = "Boeuf" Then
        FL1.Cells(NoLig, NoCol + 3) = "extraction 11" 'adapter colonne résultat
        End If
        End If
    Next
    Set FL1 = Nothing
End Sub
Public Function NoSem(UneDate As Date) As Integer
   On Error Resume Next
   NoSem = CInt(Format(UneDate, "ww", vbMonday, vbFirstFourDays))
   'Verification du bug, reconnu par MS, sur Oleaut32.dll
   If NoSem > 52 Then
      If CInt(Format(UneDate + 7, "ww", vbMonday, vbFirstFourDays)) = 2 Then NoSem = 1
   End If
End Function


Voilà

0
Utilisateur anonyme
11 juin 2019 à 16:37
Bonsoir,
Merci beaucoup mais j'ai une petite erreur 13


que dois-je rectifier?
encore merci pour ton aide

A+
Geoffroy
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 11 juin 2019 à 16:54
Déclare ta variable comme ceci:

Dim nombre As String '2 caracteres à gauche


ou

Dim nombre As Variant '2 caracteres à gauche
0
Utilisateur anonyme
11 juin 2019 à 17:23
Ok
j'ai mis variant si non même erreur.
Par contre pour voir les lignes extraites que dois-je modifier car là rien :)
ça ne plante pas.
si c'est possible de mettre les lignes extraites dans une autre feuille exemple "extraction"
merci
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
11 juin 2019 à 18:16
Voilà un classeur exemple à adapter:

https://www.cjoint.com/c/IFlqpWIfopQ

@+ Le Pivert
0
Utilisateur anonyme
13 juin 2019 à 19:15
Bonsoir,
et merci beaucoup pour ton aide mais j'ai un petit souci avec ta macro.
ci-joint le fichier
https://www.cjoint.com/c/IFnrj5zhMZs

j'ai ajouté une petite explication en espérant d'être clair
@+
Geoffroy
0