Recherche de lignes grâce a une colonne

Je viens de faire un test chez moi en simulant plus de 500 données et tout à l'air OK.

Tu as bien tout le temps soit 0, soit un nombre ? Les cellules de la colonne F ne sont pas vides ?

J'ai rajouté en début de macro un effacement de la colonne I. Mets-le aussi, ça ne peut pas nuire.

Bonjour à tous,

@JoyeuxNoel : Joli !!!

@Skip : Etes-vous sûr d'avoir autant de valeurs en colonne 1 qu'en colonne 6 ?

Cdlt,

Hello 3GB !
Non pas joli.

J'ai l'impression que le code est bancal et ça m'éneeeeeeeeerve !

J'aimerais bien me passer de la variable nb et savoir s'il n'y a pas moyen de remplir Arrc sans s'embêter en amont avec cette déclaration (mais ce n'est peut-être pas possible)

Je vais aussi rajouter un test pour sortir de la macro si aucune valeur n'est supérieure à O, sinon ça devrait planter.

Sub extraire()
Dim Arrc, Arrs
Dim n As Integer

Columns("I:I").ClearContents

With Sheets("feuil1")
    dl = .Cells(.Rows.Count, 1).End(xlUp).Row: If dl < 2 Then Exit Sub

Arrs = .Range(.Cells(1, 1), .Cells(dl, 6)).Value
nb = Application.WorksheetFunction.CountIf(Range("F:F"), ">0")
    if nb <1 then exit sub
Arrc = .Range(.Cells(1, 9), .Cells(nb, 9)).Value
n = 0
    For I = 1 To dl
        If Cells(I, 6) > 0 And Cells(I, 6) <> "Quantité" Then
            n = n + 1
            Arrc(n, 1) = Arrs(I, 1)
        End If
    Next I

    Columns("I:I").ClearContents
    .Range(.Cells(1, 9), .Cells(n, 9)) = Arrc
End With
End Sub

Loool, le mieux est l'ennemi du bien, ne nous pète pas une durite .

Effectivement, il est possible de se passer des déclarations mais ça n'a pas d'impact sur le code...

Non mais quand j'ai eu l'impression d'avoir fait le tour des fonctions et de me débrouiller à peu près bien avec, je suis passé au VBA. La révolution !

On gagne plein de temps, c'est super.

Mais là, j'ai l'impression de plafonner et de ne pas arriver à franchir le palier supplémentaire qu'il faudrait. Il y a encore trop de petites choses qui m'échappent.

Sur cet exemple précis, je suis d'accord avec toi, ça ne change pas grand chose au schmilblick. Mais sur de plus gros projets, ça + ça + ça, ça fait une sacrée différence quand même.

Oui, c'est sûr mais souvent les efforts et les solutions viennent au moment opportun. C'est à ça que sert le forum. Le jour où on devra recréer toutes les fonctions Excel par exemple , on réfléchira vraiment aux solutions optimales !

Ahah, n'oublie pas le recodage des raccourcis clavier aussi

Bonjour,

Une possibilité :

Sub Galopin()
Dim ArrS, ArrC, Plage As Range, i%, n%

Set Plage = [A1].CurrentRegion.Resize(, 6)
ArrS = Plage.Value
ArrC = Range("J1:K" & UBound(ArrS)).Value
ArrC(1, 1) = "Article"
ArrC(1, 2) = "Qte"
n = 2
For i = 2 To UBound(ArrS)
   If ArrS(i, 6) > 0 Then
      ArrC(n, 1) = ArrS(i, 1)
      ArrC(n, 2) = ArrS(i, 6)
      n = n + 1
   End If
Next
Range("J1").Resize(n-1, 2) = ArrC
End Sub

La même si on ne s'intéresse qu'aux références :

Sub Galopin2()
Dim ArrS, ArrC, Plage As Range, i%, n%
ArrC = [A1].CurrentRegion.Value
Set Plage = [A1].CurrentRegion.Resize(, 6)
ArrS = Plage.Value
ArrC(1, 1) = "Article"
n = 2
For i = 2 To UBound(ArrS)
   If ArrS(i, 6) > 0 Then
      ArrC(n, 1) = ArrS(i, 1)
      n = n + 1
   End If
Next
Range("J1").Resize(n-1) = ArrC
End Sub

A+

Bonjour…

Quel est l’intérêt de la chose ?

Pour aller un peu plus loin, on veut dresser la liste des articles sortis (quantité saisie autre que 0), articles contenus dans un Tableau* et ceci, par exemple, pour une gestion de stock (très limitée ici, sujet à compléter).

tb gestion
Dim P As Range, L As Long
Private Sub Worksheet_SelectionChange(ByVal R As Range)
  If R.Address <> [TS].Item(1, 1).Address Then Exit Sub
  If Application.CountA([TS]) > 0 Then [TS].Delete
  [TB].AutoFilter 7, "<>"
  Set P = [TB[Article]].SpecialCells(12)
  [TB].AutoFilter
  P.Copy [TS].Item(1, 1)
  [TS].RemoveDuplicates Columns:=1, Header:=1 'sans doublon
  [TS].Sort [TS].Columns(1), Header:=1        'tri selon Article
  'si voulu décompte 
  [TS].Columns(2).FormulaR1C1 = "=SUMIF(TB[Article],[@Sortie],TB[Quantité])"
End Sub

* objet très intéressant, par ses spécificités donc indispensable, à utiliser dans la gestion de bases de données non astronomiques

Merci a tous!

Je reste sur le programme de JoyeuxNoel puisque j'ai déjà adapté mon programme principal, d'ailleurs si tu es encore la, tu saurais comment récupérer la quantité des articles quand celle-ci est supérieur à 0 en colonne J par exemple ?

Bonjour,

Oui, tout à fait. Il suffit de prendre la 1ère solution de Galopin01 ☺️

Merci à Ordonc et à lui, d'ailleurs, d'être venus apporter plus de précisions et des codes mieux huilés.

Rechercher des sujets similaires à "recherche lignes colonne"