Fonction recherche V

Stephi83 Messages postés 19 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 29 avril 2007 - 26 avril 2007 à 18:23
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 29 avril 2007 à 14:42
Bonjour,

J'ai mis en place une formule Lock up qui pour un produit donné va me chercher les achats et les ventes sur ce produit.
Le pb, c'est que j'ai plusieurs lignes d'achats et de ventes mais ma fonction ne rapatrie que la première.
J'aimerais savoir comment faire pour rapatrier tous les achats/ventes sur ce produit.

Merci par avance
Stephi83

7 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
26 avril 2007 à 18:32
Salut,

Mettre un petit bout de code, pour poivoir comprendre ou il y a le bins..

A+
Exploreur

 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
27 avril 2007 à 00:06
Une RechercheV ne trouvera que la première instance trouvée.

Si tu veux faire le total d'une certaine colonne pour toutes les instances d'un code, disons, il faudra que tu utilises un Somme.Si (SumIf, en anglais)

=SOMME.SI(A:A; MonCode; D:D)
qui veut dire:
Rechercher dans la colonne A   MonCode  et donner la somme des valeurs en D où se trouve MonCode

Donc, si ton code est en A2
=SOMME.SI(A:A; A2; D:D)

MPi
0
Stephi83 Messages postés 19 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 29 avril 2007
28 avril 2007 à 21:23
Désolée de répondre si tard.
En fait, je veux le détail de chaque ligne alors somme.si , ca ne va pas.

Du coup, j'ai essayé une autre méthode :
1- Je fais un filtre de manière à afficher les achats/ventes d'un produit
2- Je sélectionne cette liste
3- Je la copie vers une autre page
4- Je reviens à mon tableau d'origine
5- La boucle fait un filtre sur le produit suivant, sélection, etc...

Ca marche mais le pb c'est que ca me copie les données sur la même cellule de destination à chaque fois, du coup ca m'efface les données copiées du produit précédent.

Donc, il faudrait que ma cellule de destination se décale automatiquement
vers le bas du nbre de ligne d'achats/ventes du produit précédent... mais malheureusement  mes neurones VBA ne sont pas encore très développés (dur d'apprendre seule, surtout que c'est pour mon nouveau boulot !).
Merci par avance

Voici mon code :

Sub filtre_ordres()

For I = 1 To 30

Worksheets("Ordres").Range("A2:G25").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=ActiveCell.Offset(I - 1, 0)
Selection.Copy
Worksheets("Feuil1").Range("A1").Select
ActiveSheet.Paste
    
Worksheets("Ordres").Range("A2:G25").Select
Selection.AutoFilter

End Sub
0
Stephi83 Messages postés 19 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 29 avril 2007
28 avril 2007 à 21:23
Désolée de répondre si tard.
En fait, je veux le détail de chaque ligne alors somme.si , ca ne va pas.

Du coup, j'ai essayé une autre méthode :
1- Je fais un filtre de manière à afficher les achats/ventes d'un produit
2- Je sélectionne cette liste
3- Je la copie vers une autre page
4- Je reviens à mon tableau d'origine
5- La boucle fait un filtre sur le produit suivant, sélection, etc...

Ca marche mais le pb c'est que ca me copie les données sur la même cellule de destination à chaque fois, du coup ca m'efface les données copiées du produit précédent.

Donc, il faudrait que ma cellule de destination se décale automatiquement
vers le bas du nbre de ligne d'achats/ventes du produit précédent... mais malheureusement  mes neurones VBA ne sont pas encore très développés (dur d'apprendre seule, surtout que c'est pour mon nouveau boulot !).
Merci par avance

Voici mon code :

Sub filtre_ordres()

For I = 1 To 30

Worksheets("Ordres").Range("A2:G25").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=ActiveCell.Offset(I - 1, 0)
Selection.Copy
Worksheets("Feuil1").Range("A1").Select
ActiveSheet.Paste
    
Worksheets("Ordres").Range("A2:G25").Select
Selection.AutoFilter

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Stephi83 Messages postés 19 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 29 avril 2007
28 avril 2007 à 21:23
Désolée de répondre si tard.
En fait, je veux le détail de chaque ligne alors somme.si , ca ne va pas.

Du coup, j'ai essayé une autre méthode :
1- Je fais un filtre de manière à afficher les achats/ventes d'un produit
2- Je sélectionne cette liste
3- Je la copie vers une autre page
4- Je reviens à mon tableau d'origine
5- La boucle fait un filtre sur le produit suivant, sélection, etc...

Ca marche mais le pb c'est que ca me copie les données sur la même cellule de destination à chaque fois, du coup ca m'efface les données copiées du produit précédent.

Donc, il faudrait que ma cellule de destination se décale automatiquement
vers le bas du nbre de ligne d'achats/ventes du produit précédent... mais malheureusement  mes neurones VBA ne sont pas encore très développés (dur d'apprendre seule, surtout que c'est pour mon nouveau boulot !).
Merci par avance

Voici mon code :

Sub filtre_ordres()

For I = 1 To 30

Worksheets("Ordres").Range("A2:G25").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=ActiveCell.Offset(I - 1, 0)
Selection.Copy
Worksheets("Feuil1").Range("A1").Select
ActiveSheet.Paste
    
Worksheets("Ordres").Range("A2:G25").Select
Selection.AutoFilter

End Sub
0
Stephi83 Messages postés 19 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 29 avril 2007
28 avril 2007 à 22:31
merci de ne pas tenir compte de mon message précédent.
ce que j'ai dit reviens à copier coller l'ensemble du tableau

Stephi83
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
29 avril 2007 à 14:42
Salut,

Tu sembles vouloir récupérer la somme de tous les produits tout en les affichant, c'est bien ça ?

Peut-être devrais-tu regarder du côté des sous-totaux ?
menu Données / Sous-totaux

Tu commences par trier ta plage sur la colonne des codes
Tu sélectionnes ta plage, incluant une ligne d'entête
Tu sélectionnes le menu mentionné
Dans la 1ere boîte, tu indiques l'entête des codes de produits
Dans la 2e boîte, tu inscris Somme
Dans la 3e, tu coches la ou les colonnes dont tu veux récupérer le total
En bas, tu laisses les 2 boîtes cochées par défaut (la 1ere et la 3e)

Tout ceci peut aussi se faire par code. Donc, en utilisant l'enregistreur de macro, tu devrais pouvoir y trouver ton bonheur...

Note: lorsque tu veux refaire un sous-total, tu dois au préalable effacer les sous-totaux existants.
Tu resélectionnes ta plage, incluant entêtes et sous-totaux.
Tu vas dans le même menu, et tu choisis "Supprimer tout", en bas.

MPi
0
Rejoignez-nous