EXTRAIRE dans 2 colonnes des lignes

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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

1 réponse

Résumé de la discussion

L’objectif est d’extraire des lignes dans Excel via VBA en se basant simultanément sur deux critères : la colonne N°Semaine/Lot pour les semaines et la colonne Produit pour les libellés. Des approches préconisent de déduire 7 semaines pour Noix et ROSETTE et 11 semaines pour les Bœufs, en comparant les deux premiers chiffres de N°Semaine/Lot à une valeur dérivée de la semaine actuelle. Certaines propositions basculent les résultats vers une feuille distincte et utilisent des variables simples (InputBox, Left(Var,2), vérifications If) pour filtrer et copier les lignes correspondantes. En pratique, des améliorations sont suggérées pour éviter les doublons, gérer les casse et sécuriser les noms de feuilles, tout en offrant une extraction même lorsque des colonnes restent vides.

Bobot (l'IA à votre service)
  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. Utilisateur anonyme
       
      Bonsoir,
      Merci beaucoup mais j'ai une petite erreur 13


      que dois-je rectifier?
      encore merci pour ton aide

      A+
      Geoffroy
      0
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Déclare ta variable comme ceci:

      Dim nombre As String '2 caracteres à gauche


      ou

      Dim nombre As Variant '2 caracteres à gauche
      0
    3. Utilisateur anonyme
       
      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
    4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Voilà un classeur exemple à adapter:

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

      @+ Le Pivert
      0
    5. Utilisateur anonyme
       
      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