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 SubMaintenant 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
Bonjour
Je ne suis pas sûr d'avoir bien compris.
Cette proposition est à tester et critiquer.
A vous lire
Bonjour,
Super,
Bonne prise en compte des contrainte.
A la place du 7 est ce que je peux mettre "
Val_Version = cells(ActiveCell.Row,["Version"].ValueSinon 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).ValueMais 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
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