Faire une condition sur VBA

Résolu/Fermé
Holtlion31 Messages postés 26 Date d'inscription jeudi 6 février 2014 Statut Membre Dernière intervention 1 juin 2016 - 4 nov. 2014 à 08:59
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 5 nov. 2014 à 12:22
Bonjour,

Voilà j'ai un tableau avec des valeurs et j'ai mes titres:
- Référence
- Code article
- Intitulé 1
- Intitulé 2
- Intitulé 3
- Famille
- Marque
- Bilan

Ces titres sont repris sur un tableau a côté avec des formules Excel. Les cases sont en en binaire (1 ou 0) avec les formules SI= ...
Mon problème est le Bilan qui est en fait une multiplication de tous mes titres donc pareil soit tout est à 1 et mon bilan est à 1, soit un titre non renseigné induit un 0 et du coup mon bilan est à 0.
Donc quand je recherche un article par marque, référence ou autre, vu que dans 99% des cas tout mes titres sont renseignés donc tout mes bilans sont à 1, il me sort l'article choisit plus le reste de la liste plus que mon bilan est à 1.

Donc j'aimerai intégrer une condition qui me fasse ressortir dans ma recherche que l'article recherché.
Est-ce possible déjà? Je me doutes que oui
Et comment fait-on du coup car VBA c'est pas vraiment mon pot quoi?

Je vous remercie :)

6 réponses

Bonjour,

Ton explication n'est pas très claire. Peux tu donner un exemple concret, ou nous faire parvenir ton tableau?

A+
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
4 nov. 2014 à 10:32
Bonjour,

Merci de clôturer cette discussion si elle n'est plus d'actualité :
https://forums.commentcamarche.net/forum/affich-30987644-probleme-excel-et-vba
0
Holtlion31 Messages postés 26 Date d'inscription jeudi 6 février 2014 Statut Membre Dernière intervention 1 juin 2016
4 nov. 2014 à 10:58
Alors je détaille
Désolé mais pour des raisons de confidentialité je ne peux donner le tableau. De plus ca me prendrai trop de temps d'en faire un exemple
Donc je vais essayer d'être plus clair.

Ce fichier excel dispose de plusieurs feuilles. une feuille "Rechercher un article", une feuille "Transfert" servant de base de donnée, et plusieurs feuilles "BPU" qui sont des bordereaux de prix de divers fournisseurs. Ces BPU sont des tableaux déjà remplis (marque référence prix, intitulé, code articles ...)

Le fichier fonctionnait déjà est très bien.
Seulement on m'a donné ce fichier en me demandant de rajouter une feuille "BPU PERSO". Cette feuille va être remplie au fur et à mesure par l'utilisateur.
Donc j'ai adapté le fichier avec formule excel correspondante mais j'ai actuellement pas touché au programme VBA derrière mes feuilles. J'ai repris la trame déjà utilisé pour les autres feuilles afin de e simplifier la vie au maximum.
Comme dit précédemment mes "tableaux repris à côté" ressemble a ceci:
_______________________________________________________________
BPU SIEMENS (Exemple)

Référence| Code article| Intitulé1| Intitulé2| Intitulé3| Famille| Marque| Bilan
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1
1 | 0 | 1 | 1 | 1 | 1 | 1 | 0

la formule Bilan est: =PRODUIT(Référence:Marque)
Les formules de mes titres sont:
=SI(C5="";0;SI('Rechercher un article'!$B$1="";1;SI(ESTERREUR(CHERCHE('Rechercher un article'!$B$1;C5;1));0;1)))
(A adapter aux cases près)

Fonctionnement initial:
Quand je vais dans "Rechercher un article" et que je cherche un article des BPU EXISTANT (je ne parle pas du BPU PERSO que je viens de créer) soit par marque, ref ou autre, il me sort bien mon article chercher et uniquement celui-ci. Si je connais pas la réf exacte je tape le début et il me sort tous les article comportant ce début de mot. Nickel :)

Fonctionnement avec Mises à jours:
Mtn avec mon nouveau "BPU PERSO", quand je vais dans "Rechercher un article" et que je cherche un article soit par marque, ref ou autre, il me sort bien mon article chercher mais aussi tout ceux que j'ai remplit dans mon nouveaux BPU car mes bilans sont tous à 1 (ceux dont le Bilan est à 0 ne sortent pas). Idem si je cherche une marque d'un BPU existant il me sort également les articles de mon nouveau BPU.
Autrement dit, pour Excel, dans mon nouveau BPU ,Bilan à 1 j'affiche!
Bilan, à 0, je n'affiche que si c'est l'article souhaité!

Voici le programme VBA:

Sub Recherche()
'
' Recherche Macro
'
Sheets("Rechercher un article").Select
Range("A10:I20000").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents

Sheets("Transfert").Select
Range("A2:G20000").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Rechercher un article").Select
Range("A10:G10000").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Rechercher un article").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Rechercher un article").Sort.SortFields.Add Key:=Range("D10:D20000") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Rechercher un article").Sort
.SetRange Range("A10:G20000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Worksheets("Rechercher un article").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Rechercher un article").Sort.SortFields.Add Key:=Range("D10:D20000") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Rechercher un article").Sort
.SetRange Range("A10:G20000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A6").Select
End Sub
Sub Valider()
'
' Valider Macro
'

Range("p10:v10").Select 'Se positionner sur la zone des éléments à valider
Range(Selection, Selection.End(xlDown)).Select 'Sélectionner tous les éléments à valider
Selection.Copy 'copier les éléments à valider

Range("w10").Select 'Se positionner sur la zone où coller les infos
Selection.PasteSpecial Paste:=xlPasteValues 'Coller uniquement les valeurs
ActiveWorkbook.Worksheets("Rechercher un article").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Rechercher un article").Sort.SortFields.Add Key:=Range("W10:W1000") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Rechercher un article").Sort
.SetRange Range("W10:AC20000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("W10").Select

K = 1
Cherche_ligne_vide = 0

While (Cherche_ligne_vide = 0)
If Cells(K + 9, 23).Value = "" Then Cherche_ligne_vide = K - 1
K = K + 1
Wend

Range(Cells(10, 23), Cells(10 + K - 3, 29)).Select
Selection.Copy
Range("A1").Select

Sheets("Fournitures necessaires").Select
i = 1
Cherche_ligne_vide = 0

While (Cherche_ligne_vide = 0)
If Cells(i + 4, 1).Value = "" Then Cherche_ligne_vide = i
i = i + 1
Wend

If i > 27 Then

MsgBox "Vous ne pouvez pas saisir plus de 27 articles"
Exit Sub

Else
Range(Cells(i + 3, 1), Cells(i + 3, 7)).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("A1").Select

End If

End Sub
_______________________________________________________________

Donc ma question est:

Dans ce programme (dont je ne comprends pas la moitié des termes), que faut-il que je modifie/rajoute pour qu'il respecte les conditions des anciens BPU

en espérant être plus clair
0
La macro Recherche() se contente de copier des données se trouvant sur la feuille "Transfert" en Range("A10:I20000") et de les coller sur la feuille "Rechercher un article" en Range("A10:G10000"), puis de faire un tri.

Je ne vois aucune recherche/sélection faite suivant des critères.
A mon avis ce n'est pas cette macro qui est est en cause.
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
4 nov. 2014 à 16:50
Re bonjour,

Yoda à raison, en voyant ce code il nous manque encore pas mal d'infos.

En particulier comment se fait le transfert des feuilles BPU vers Transfert.

La macro Valider ne fait que recopier le résultat dans la feuille "Fournitures nécessaires".

Ou sont les colonnes "à coté". Dans la feuille BPU ? dans la feuille Recherche ? et dans quelles colonnes et à partir de quelle ligne ?

Ensuite comment ce fait le filtrage. Il y a un filtre quelque part sur la colonne Bilan mais se fait-il par macro ou par filtre Excel ?

Il faudrait nous donner plus précisément le schéma de chaque feuille. L'emplacement et le titre des colonnes et les lignes.

Nous dire si il n'y a pas d'autres macros (dans le code des feuilles ou dans des modules séparés)
0

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

Posez votre question
Holtlion31 Messages postés 26 Date d'inscription jeudi 6 février 2014 Statut Membre Dernière intervention 1 juin 2016
5 nov. 2014 à 11:59
En fait j'ai trouvé ma solution.
Ce ne vient pas de VBA mais d'excel simplement. Les formules SI que j'ai inscrite ne prenaient pas les bonnes conditions donc ils me généraient tout automatiquement.
J'ai réfléchi, ca aide, et j'ai affecté mes Si aux bonnes conditions. Mtn tout fonctionne parfaitement

je vous remercie encore
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
5 nov. 2014 à 12:22
Bonjour,

Bonne continuation.
Je marque en résolu
0