ebutant sur vba je bloque ...

ebutant sur vba je bloque ... - VB/VBA/VBS - Programmation

Marsh Posté le 07-05-2013 à 16:03:46    

Bonjour,
 
Je suis sur une macro depuis plusieurs jour je bloque.
Voila j'ai une extraction de BDD et afin de faciliter son expertise je voudrais creer un outils qui ressort les ligne identique par rapport a la valeur contenu dans la colonne Version et Part ID ou Document ID et Document Version.
la difficulte c est que les colonnes ne sont jamais au meme endroit suivant la BDD  extraite.
Voici le code que j ai creer jusqu ici
 
Sub CellulesValeurDeterminee()
Dim cells As Variant
Dim Val_data As String
        Val_data = ActiveCell
''CHOIX DE LA COLONNE
            For Each cells In Range(ActiveCell.Offset(1000, 0))
''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
 
Actuellement je suis oblige de donner la colonne et selectionner la cellule.
La finalite de mon projet :
L'utilisateur selectionne la ligne qui l'interesse par rapport a sa recherche suivante la contrainte "Version et PartID " OU "Document ID et Document Version"choisie et toute les ligne change de format.
 
Je vous remercie de m'aider. Me donner du code sans les explication serait bien, mais je preferais les explication en plus ca me permettrais d evoluer.
 
Merci encore et pour plus d explication je reste dispo.
 
Oli13011

Reply

Marsh Posté le 07-05-2013 à 16:03:46   

Reply

Marsh Posté le 08-05-2013 à 11:28:54    

Bonjour,
 
1) Met le code entre balise, c'est plus lisible
2) Val_Data = ActiveCell, en plus de ne pas retourner une valeur mais un Range. Et surtout, on a aucune idée de quelle est la cellule active [:osweat]
3) Evite de nommer une variable cells, c'est aussi le nom d'un objet VBA
4) Range(ActiveCell.Offset(1000, 0)) ne retourne pas une plage, mais une seule cellule. Ce que tu veux est Range(cellulededepart, celluledefin) :o
5) ON UTILISE PAS .SELECT DEDJEU  
(Parce que là, un .Select suivi d'un .Selection, dans un With Selection, euh [:tinostar])
 
Je comprends pas tout à fait ce que tu veux faire, mais déja corrige ça, ça permettra d'y voir plus clair.
Bref, ton code compile vraiment ? [:osweat]

Reply

Marsh Posté le 08-05-2013 à 13:58:30    

Tzol a écrit :

2) Val_Data = ActiveCell, en plus de ne pas retourner une valeur mais un Range.


            Pas d'accord, un objet de type Range seul renvoie bien sa valeur (.Value)…
 
            Il faut  Set Val_Data = ActiveCell  pour pointer la variable en type Range.
 

Reply

Marsh Posté le 08-05-2013 à 14:11:02    

Merci pour l'info, ça m'évitera peut-être des bêtises :jap:
Mais ça me parait générateur de confusion et donc à éviter.


Message édité par Tzol le 08-05-2013 à 14:11:55
Reply

Marsh Posté le 13-05-2013 à 12:58:00    

Bonjour,
Désolé pour le silence mais je déménage et plus de net pendant encore une semaine.
 

Spoiler :

Sub CellulesValeurDeterminee()
Dim cells As Variant
Dim Val_data As String
        Val_data = ActiveCell
''CHOIX DE LA COLONNE
            For Each cells In Range("N3:N3000" )
''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


 
J'ai une base avec en ligne 2  plusieurs colonnes, de 5 a 10 colonnes.
- L'ordre des colonne n est pas le meme d'une extration a l'autre
- La modification de format dois se faire automatiquement suivant certain critere :
je veux changer de format toutes les lignes ayant la "Part ID" 123ABC dans la "Version" --B
donc ma macro doit regarder dans la colonne "Part ID"et repere toutes les lignes correspondantes a cette Part ID mais ne dois changer de format que celle qui ont la version --B
- Avec la meme macro (c est pour ca que j avais mis OU) je dois faire le meme genre de recherche mais avec deux autre colonnes "Document ID" et "Document Version"
 
Avec ma macro j arrive a faire ce que je veux mais seulement avec une seule contrainte alors que je dois selectionner sur deux contrainte parce que je peux avoir plusieurs version du meme Part ID, et mon deuxieme soucis mon range je suis obligé de le changer sur chaque extraction alors que je voudrais que ce sois ma macro qui cree sa propre plage.  
 
Mes excuses je ne mets pas forcement d accens ou d apostrophe parce que je suis sur une clavier QWERTY anglais.
 
Merci pour votre aide precieuse
 
Olivier

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed