Rechercher et exploiter valeurs

Bonjour,

Je cherche a remplir un tableau en fonction d'une liste (liste importé depuis un autre fichier par un copier/coller)

J'ai d'un coté un cartouche a remplir, de l'autre un listing a exploiter et enfin une base qui me permet de faire la liaison entre le cartouche et le listing. Pour le moment, je ne me sert pas de la base, je m'en servirai pour faire une boucle qui rechercher ligne par ligne.

Mon premier soucis, je peux avoir plusieur résultat possible

Exemple :

je cherche la valeur "Aggloméré" si je la trouve je met "Agglo 22" dans la case B1

je cherche la valeur "Bois-Ciment" si je la trouve je met "Bois Ciment" dans la case B1

SI

Je trouve la valeur "Aggloméré" et "Bois-Ciment" je met rempli pas le cartouche mais je déclanche une msgbox

Mon second soucis, trouver 2 valeurs identiques ou non dans le listing mais toujour dans le meme ordre.

J'aurai toujours les valeur RAL **** 2 fois, avec **** pas forcement identique.

Genre dans le listing je vais avoir RAL 5002 / RAL 9002 et donc les case C4=5002 / C5=9002

donc le soucis,est comment identifier que le premier trouver est pour la ligne 4 et le second pour la ligne 5

Je joint un fichier pour éclaircir le tout.

Pour info j'utilise un bout de code trouvé sur le net que...je ne comprend pas vraiment... J'ai tout de meme réussi a l'exploiter efficacement dans une autre problématique qui consite a remplir des cases en fonction de la valeur situé en face de la ligne rechercher :

    Option Explicit

    Sub Trouver()

    Dim Designation As String
    Dim Feuille As String
    Dim Zone As String
    Dim F As Worksheet
    Dim R As Range
    Dim i As Long
    Dim FirstFound As String
    Dim Ligne As Integer
    Dim went As Integer
    For Ligne = 2 To 5

    Designation = Sheets("Modèles").Cells(Ligne, 1)
    Feuille = Sheets("Modèles").Cells(Ligne, 2)
    Zone = Sheets("Modèles").Cells(Ligne, 3)

    With Range(Zone)
    went = 3 + Range("a10").Value

    Set R = .Find(Designation, LookIn:=xlValues, Lookat:=xlWhole)
    If Not (R Is Nothing) Then
    FirstFound = R.Address
    Do
    R.Offset(0, 1).Value = Cells(Ligne, went)
    Set R = .FindNext(R)
    Loop While R.Address <> FirstFound

    Else

    End If
    End With

    Next Ligne

End Sub

Merci d'avance.

Harissa.

bonjour

ton histoire n'est pas claire ;que cherches- tu à faire : des listes en cascade ???

exemple

en 1 je choisi un produit

en 2 ça me donne une liste qui ne concerne que ce qui intresse le produit choisi en 1

si c'est ça; ta base est mal faite (ou tres dure a exploiter)

cordialement

Bonjour,

En effet j'ai pas du etre clair.

En faite, je cherche a remplir un cartouche (de production, inséré en objet OLE dans autocad). Actuelement le remplissage se fait manuelement, j'ai des menus déroulant pour choisir les bonnes valeurs en fonction de ce que je lit dans le descriptif.

La je souhaite, en fonction du listing que j'importe et selon les critères que j'ai dans ma base, remplir mon cartouche (que je garderai avec des menus déroulant pour pouvoir continuer a faire comme avant)

Donc ce que je cherche a faire, c'est trouver une valeur dans une colonne "importation" et puis en fonction de cette valeur utiliser le critère dans "base" pour remplir le "cartouche".

re

donc d'apres tes dires

une liste de designation (issue de 'importation' ) cette liste genere une 2eme liste (sous liste avec les valeurs sous la ligne verte correspondant) toujours issue de 'Importation'

une fois ce choix fait aller recuperer dans Base une valeur correspondant au choix 2

donc normalement ton cartouche ne devrait se composer que de 3 cellules ou plus si plusieurs valeurs sont a trouver dans "base"

c'est la que le bat blesse

re,

Dans le fichier joint, c'est le code Trouver() d'on je parle, je pensais avoir supprimer le second avant d'upload, il ne faut pas en tenir compte.

Alors la liste dans "importation" est fixe, elle est généré dans un autre fichier (que je vais ouvrir avec Cartouche, je copie les données que je recole dans "importation", ensuite "importation" ne bouge plus.

Pour le moment on peux exclure "Base", je m'en occuperai plus tard, ca a pour but de facilité et réduire le code. Enfin c'est ma vision de la chose, a voir si c'est comme cela qu'il faut s'y prendre, j'y reviendrai plus bas.

Dans "importation" je récupère par exemple l'info sur le type de plancher:

  • La plus part des dossiers relativement sont standard, le type de plancher c'est soit "Aggloméré" soi "Bois-Ciment". Mon code fonctionne parfaitement, (meme si c'est pas beau ^^) je pourrai directement l'utiliser avec la "base" en utilisant une boucle (comme le code que j'ai affiché sur mon premier commentaire).
  • Le soucis c'est que je peux avoir sur le même dossier " "Aggloméré" et "Bois-Ciment", donc dans "importation", j'aurai une ligne pour chaque (la second case étant la surface, pour info). Ce genre d'info qui n'étant pas standard, je devrai le géré manuellement dans mon cartouche). On vois bien que si l'on rajoute "Aggloméré" dans "importation", l'info est mal géré.

Je vais déjà corriger mon code, j'imagine que n'avoir que "Dim R As Range" pour plusieur recherche c'est foireu. D'ailleur je me dit que c'est le début du probleme.

Voila, j'ai refait tout cela un peu plus propre.

C'est plus propre mais je n'arrive pas pour autant a mieux l'exploiter, par exemple pour la peinture, que j'ai 1 ligne ou 2 dans "importation" c'est pareil, ca m'affiche le même résultat.

Je n'arrive pas non plus a géré l'info Agglo et Bois Ciment...

25cartouche-v2.zip (19.13 Ko)

re

bon j'avoue ne rien comprendre

en attendant je t'ai fait 2listes interdependantes issues de "importation"

le procedé de creation de liste etant +/- complexe car j'ai du recreer un tableau automatisé qui permet la selection des sous criteres

cela etant lors de ton importation respecte bien la position de la premiere designation (A5) car sinon tout le process est fusillé

alors vois ce que tu peux faire avec ces 2 listes

cordialement desolé

23harissa.zip (22.41 Ko)

Désolé mais tu n'y es pas du tout.

Je ne cherche pas a rempli mon cartouche avec des menus déroulants, je le fait déjà tous les jours, je cherche justement a automatiser le boulot !

Bonsoir

J'ai regardé ton fichier et si c'est clair dans ton esprit (car tu connais ton boulot) moi j'ai du mal à tout saisir

J'indique ce que j'ai compris (et pose mes questions en même temps)

Tu recherches des mots dans la colonne A de la page "Importation", quand tu en as trouvé 1 tu cherches encore (pourquoi ?) ensuite tu notes ce que tu as trouvé

Que se passe t-il si tu ne trouves rien ?

Que se passe t-il si tu trouves "Bois-ciment" (pour le plancher) et "Aggloméré" pour les cloisons ?

(Peut-être que tu n'auras jamais d'info sur le plancher et des infos sur les cloisons en même temps)

Ensuite tu cherches 2 "RAL XXXX" cela sera toujours ces 2 mots ?

Pourquoi les résultats sont dans A9 et A10 ?

Juste une remarque : Coder en dur les recherches dans la macro ne facilite pas les modifications ultérieures

Bonjour,

C'est dommage que je n'arrive pas a me faire comprendre ^^

J'ai enfin réussi a faire ce que je veux, enfin une partie. J'ai repenser la chose.

Je vais chercher dans "Base" si la valeur existe dans "importation", si oui je met un 1 en face.

Ensuite avec une formule, je détermine quoi afficher comme résultat et je viens compléter mon tableau

Pour le problème de RAL **** , ll faudrait que je cherche juste la valeur "RAL" et a chaque fois que je la trouve, je copie la valeur complète dans une cellule.

Le soucis c'est qu'avec la méthode que j'utilise la recherche dans la liste recommence à la premiere ligne de celle ci.

C'est noté sinon pour la remarque, merci, c'est vrai que c'est plus clair a lire.

36cartouche-v3.zip (19.66 Ko)

Bonjour,

J'ai trouvé une solution...enfin j'ai adapté un code que j'ai trouvé (donc je capte pas tout...)

Premièrement, c'est long a exécuter, peut être il y a un code plus simple a créer...

C'est lent parce-que je doit chercher une valeur comprise entre RAL 1000 et RAL 9999 et faire la rechercher sur un plage d'environ 10 lignes (la position étant plus ou moins toujours la même à 2-3 cellules prés.)

Si quelqu'un a une idée ?

Deuxièmement, la valeur recherche est actuellement

"RAL " & Num (avec Num de 1000 à 9999) , je souhaite rechercher la meme chose mais avec "RAL " & Num & Valeurdiverse

Je ne sais pas comment créer "valeurdiverse" ?! Je peux avoir à rechercher une valeur comme RAL 1003 (jaune)...

Y a t il juste a définir un truc du genre Dim valeurdiverse as TrucAlléatoir ?

Merci d'avance

9cartouche-v4.zip (22.28 Ko)

J'ai repris a zéro la macro pour la recherche du RAL. J'ai un résultat satisfaisant

Sub RAL()

Application.ScreenUpdating = False

'Activation du la feuil Importation
With Worksheets("Importation").Activate
    'Recherche, Si résultat nul -> Rien
    If Sheets("Importation").Columns(1).Cells.Find(What:="RAL") Is Nothing Then
    'Si résultat Recherche ok -> cellule couper/coller
    Else
    Sheets("Importation").Columns(1).Cells.Find(What:="RAL").Activate
    Selection.Cut
        With Worksheets("Base").Activate
        Range("A16").Select
        ActiveSheet.Paste
        End With
    End If
End With

'Seconde recherche meme procédé
With Worksheets("Importation").Activate
    If Sheets("Importation").Columns(1).Cells.Find(What:="RAL") Is Nothing Then
    Else
    Sheets("Importation").Columns(1).Cells.Find(What:="RAL").Activate
    Selection.Cut
        With Worksheets("Base").Activate
        Range("A17").Select
        ActiveSheet.Paste
        End With
    End If
End With

'troisieme recherche meme procédé
With Worksheets("Importation").Activate
    If Sheets("Importation").Columns(1).Cells.Find(What:="RAL") Is Nothing Then
    Else
    Sheets("Importation").Columns(1).Cells.Find(What:="RAL").Activate
    Selection.Cut
        With Worksheets("Base").Activate
        Range("A18").Select
        ActiveSheet.Paste
        End With
    End If
End With

Application.ScreenUpdating = True

End Sub
Rechercher des sujets similaires à "rechercher exploiter valeurs"