Trie d'une extraxtion

Bonjour a TOUS,

Je commence juste sur BVA et je rencontre des soucis avec ma macro.

Je travail sur des extraction de base de donnees qui sont plus ou moins differentes, l ordre des colonnes change

Mon objectif est :

1 - je saisie une ligne dont je change le format .

2 - ma macro repere ma selection

3 - elle copie la mise en forme

4 - elle colle la mise en forme sur les ligne ou il y a la meme valeur "Part_ID" ET "Version" ( le ET est tres important parce que je peux avoir le meme ID mais pas la meme version sur la meme extraxtion

Avec ma macro j arrive a reperer la valeur et la mise en forme et la coller.

Voici Mon code :

Sub CellulesValeurDeterminee()
Dim cells As Variant
Dim Val_data As String
        Val_data = ActiveCell
''CHOIX DE LA COLONNE
            For Each cells In Range("P3:P3000")
''RECHERCHE DE LA VALEUR
                If cells.Value = Val_data Then
''COPIE DE LA MISE EN FORME
    With Selection.Copy
    cells.EntireRow.Select
    Selection.PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = False
            End With
        End If
    Next

End Sub

Maintenant comme vous pouvez le constater je suis oblige de rentrer le Range, j'arrive pas a trouver la solution pour que la macro cherche d'elle meme la colonne et apres ajouter un ET.

Merci de votre aide.

Si j'ai des réponse je desirerai si cela est possible avoir des explication pour pouvoir comprendre ce que je fais et evoluer.

Désolé il manque des accents et des apostrophe c est tout simplement parce que je suis sur un clavier QWERTY anglais.

Je vous fournis une BOM (extraction).

Tres cordialement

Olivier

6bom-exemple.xlsx (131.47 Ko)

Bonjour

Je ne suis pas sûr d'avoir bien compris.

Cette proposition est à tester et critiquer.

A vous lire

3bom-exemple-v1.xlsm (138.47 Ko)

Bonjour,

Super, merci beaucoup j ai fais un esssai ca marche du tonner.

Bonne prise en compte des contrainte.

A la place du 7 est ce que je peux mettre "

Val_Version = cells(ActiveCell.Row,["Version"].Value

Sinon pour ma recherche de la colonne ID Est ce que je peux faire quelque chose comme ton Val_Version sauf que ce sera un range jusqu'au dernier de la colonne ?

Dim Val_Version

        Val_data = ActiveCell
        Val_Version = cells(ActiveCell.Row, 7).Value

Mais avec un range a la place de Value.

Pour lrs dernier details je vais chercherc avant de dire au secour

Merci encore

Olivier

Bonjour

Voici une nouvelle version, à tester et critiquer.

En supposant que les colonnes "Version" et "Part ID" Changent de place d'un document à l'autre, la macro devrait les retrouver grace à l'instruction ' Application.WordsheetFunction.Match() '. Mais à condition qu'elle retrouve ces noms avec la même orthographe et les mêmes minuscules, dans la ligne 2 des titres.

A vous lire

9bom-exemple-v2.xlsm (137.74 Ko)

Merci beaucoup gmd,

Pourrais tu me donner quelque explication un petit peu plus développées,

 Col_Version = Application.WorksheetFunction.Match("Version", Range("2:2"), 0)

Pourquoi le zero ?

la fonction :

 Col_Part_ID = Application.WorksheetFunction.Match("Part ID", Range("2:2"), 0)

est une fonction de recherche dans la feuille ?

Je suis épatté par ta facilité de résoudre mon probleme, je commence juste et maintenant que tu m as donné la solution j'ai l impression d etre passé juste a coté.

Je vais essayer de l ameliorer en ajoutant la fonction OU pour que la macro choisis deux autre colonne au cas oú il n'y aurais pas mes deux colonnes. Si je trouve je te soumettrais ma solution sinon je crierai au secours.

Merci encore

Bonne continuation.

Olivier

Bonjour

Pourquoi 0 comme 3° argument de la fonction Match ?

Cet argument est obligatoire. Il définit le type de la valeur cherchée :

Si type prend la valeur 1, la fonction MATCH recherche la plus grande valeur qui est inférieure ou égale à valeur_cherchée. Matrice_recherche doit être placée dans l'ordre croissant : ...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE.

Si type prend la valeur 0, la fonction MATCH recherche la première valeur qui est exactement égale à valeur_cherchée. Matrice_recherche peut se trouver dans un ordre quelconque.

Si type prend la valeur -1, la fonction MATCH recherche la plus petite valeur qui est supérieure ou égale à valeur_cherchée. Matrice_recherche doit être placée dans l'ordre croissant : TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ..., etc.

Si type est omis, il est considéré comme égal à 1.

Mais pour des explications plus complètes je t'invite à positionner le curseur de la souris sur "..Match..." dans la macro et à cliquer sur la touche F1 qui donne accès à l'aide.

Amélioration

Je te propose une piste pour améliorer ta macro : pose un "On Error GoTo XX" juste avant les fonctions Match. Et à l'adresse que tu indiqueras, dis à la macro ce que tu veux qu'elle fasse, si elle ne trouve pas la colonne cherchée, comme t'envoyer un message ou chercher ailleurs...

Merci gmb

à bientôt

Olivier

Rechercher des sujets similaires à "trie extraxtion"