Microsoft 365 Fleurissement.

blancolie

XLDnaute Impliqué
Bonsoir Job75,

ou se situe la partie recherche dans votre codage ? je suppose que c'est dans la feuille 1 (recherche et choix ) ou this workbok ( qui m'étonnerait). Dans la feuil1 (Recherche et choix ) c'est ce code :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:E]) Is Nothing Then Exit Sub
Dim vide As Boolean, fournisseur$, critere$, tablo, resu(), i&, n&
vide = [B2] & [C2] = ""
fournisseur = [B2]
critere = LCase(fournisseur & Chr(1) & CStr([C2])) & "*" 'textes commençant par C2....
tablo = Sheets("BDD_Technique").[A2].CurrentRegion.Resize(, 6) 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To 7)
For i = 2 To UBound(tablo)
    If Not vide And LCase(IIf(fournisseur = "", "", tablo(i, 4)) & Chr(1) & tablo(i, 1)) Like critere Then
        n = n + 1
        resu(n, 1) = tablo(i, 4)
        resu(n, 2) = tablo(i, 1)
        resu(n, 3) = tablo(i, 2)
        resu(n, 4) = tablo(i, 5)
        resu(n, 5) = tablo(i, 6)
    End If
Next
C'est bien ce code ?
 

job75

XLDnaute Barbatruc
Bien sûr Worksheet_Change est faite pour la recherche avec les 2 critères.

Curieux que mon post #60 ne vous interpelle pas... Donc j'arrête de m'occuper de ce fil.
 

blancolie

XLDnaute Impliqué
ce codage sert a quoi ?

VB:
Application.EnableEvents = False 'désactive les évènementsss
AutoFilterMode = False 'retire le filtre automatique
With [B5] '1ère cellule de restitutionnn
    If n Then
        .Resize(n, 7) = resu
        .Resize(n, 7).Borders.Weight = xlThin 'bordures
        .Cells(0).Resize(n + 1, 7).AutoFilter 'applique le filtre automatique
    End If
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 7).ClearContents 'RAZ en dessous
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 7).Borders.LineStyle = xlNone
End With
Columns(3).AutoFit 'ajustement largeur
ActiveWindow.ScrollRow = 1 'cadrage
With UsedRange: End With 'actualise la barre de défilement verticale
Application.EnableEvents = True 'réactive les évènementsss
 

job75

XLDnaute Barbatruc
n c'est le nombre de lignes qui répondent aux critères, il est plus que temps de vous y intéresser.
 

blancolie

XLDnaute Impliqué
et le 7 c'est le nombre de colonne de la feuil1 (recherche et choix) ou bdd technique, je pense que c'est bdd technique. cette partie concerne plus les bordures du tableau quand il y la cellule qui est remplit.
tablo (i ) i c'est quoi ? c'est aussi ligne et 4 c'est le nombre de colonne ?
 

job75

XLDnaute Barbatruc
La macro crée le tableau dans la 1ère feuille, 7 c'est le nombre de colonnes à partir de la cellule B5.

C'est ce nombre de colonnes qui a été donné au tableau resu.
 

blancolie

XLDnaute Impliqué
je cherche a savoir comment est indiquée ds ton codage pour aller piocher les renseignements ds la bdd tecghnique.
 

job75

XLDnaute Barbatruc
BDD_Technique est évidemment récupérée par cette ligne de code :
VB:
tablo = Sheets("BDD_Technique").[A2].CurrentRegion.Resize(, 6) 'matrice, plus rapide
s'il y a 6 colonnes.
 

blancolie

XLDnaute Impliqué
bonjour

Dim vide As Boolean, fournisseur$, critere$, tablo, resu(), i&, n&

c'est une variable ? et quand on voit dim, peut on comprendre que 'est une variable ?
 

blancolie

XLDnaute Impliqué
Bonsoir,

je vois quand on tape les 2 premières lettres dans champ de recherche dans l'onglet recherche et qu'on tape une quantité et qu'on efface ensuite les 2 lettres ds champ recherche, nos quantités et massifs disparaissent dommage. c'est un inconvénient et peut on crée dans bdd technique une commande qui remet systematique la liste par ordre alphabétique quand on rentre un nouvelle ligne.

merci
 

Fichiers joints

blancolie

XLDnaute Impliqué
bonsoir je cherche a comprendre ds ton code :

$ apres fournisseur et critère,cela veut dire quoi.
resu egalement

cette partie ci dessous permet de créer le tableau :

critere = LCase(fournisseur & Chr(1) & CStr([C2])) & "*" 'textes commenant par C2.....
tablo = Sheets("BDD_Technique").[A2].CurrentRegion.Resize(, 6) 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To 7)
For i = 2 To UBound(tablo)
If Not vide And LCase(IIf(fournisseur = "", "", tablo(i, 4)) & Chr(1) & tablo(i, 1)) Like critere Then
n = n + 1
resu(n, 1) = tablo(i, 4)
resu(n, 2) = tablo(i, 1)
resu(n, 3) = tablo(i, 2)
resu(n, 4) = tablo(i, 5)
resu(n, 5) = tablo(i, 6)
End If
Next
 

blancolie

XLDnaute Impliqué
je vois que vous mettez chr(1) ca veut dire quoi ? les exemples sur le net ne sont pas forcément parlant ou c'est moi n'a pas l'esprit pour comprendre.
 

job75

XLDnaute Barbatruc
Chr(1) c'est CAR(1), je l'utilise comme séparateur car ce caractère n'existe pas sur le clavier.
 

blancolie

XLDnaute Impliqué
bonjour,

j'essaie de mettre un troisième critère de recherche couleur à coté de plante.

j'ai modifié cette ligne suivante et je n'ai pas d'erreur mais pas de reaction non plus :

VB:
critere = LCase(fournisseur & Chr(1) & CStr([C2]) & CStr([D2])) & "*"  'textes commenant par C2.....
j'ai rajouté D2 mais je vois si il faut modifier autres choses? Peux tu me donner un indice ?

je vois que tu as donné tablo comme nom mais resu (n,1) que veut dire resu ? N =ligne et i dans tablo(i = ligne aussi.
 

job75

XLDnaute Barbatruc
Plutôt que bricoler mes codes utilisez le fichier que j'ai donné.

Le système de filtrage est amplement suffisant.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas