Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1435 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  ebutant sur vba je bloque ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ebutant sur vba je bloque ...

n°2189264
oli13011
Posté le 07-05-2013 à 16:03:46  profilanswer
 

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

mood
Publicité
Posté le 07-05-2013 à 16:03:46  profilanswer
 

n°2189314
Tzol
Posté le 08-05-2013 à 11:28:54  profilanswer
 

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]

n°2189321
Marc L
Posté le 08-05-2013 à 13:58:30  profilanswer
 

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.
 

n°2189323
Tzol
Posté le 08-05-2013 à 14:11:02  profilanswer
 

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
n°2189926
oli13011
Posté le 13-05-2013 à 12:58:00  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  ebutant sur vba je bloque ...

 

Sujets relatifs
help !! lego mindstorm nxt bloqué[Java] I2P : bloqué par un pare feu
[java] Ligne qui bloque tout mon programmeJButton bloqué par un algo
je suis bloqué dans une partie de mon prg[Oracle] Entites maître/détail, je bloque !
espaces dans valeurs variable bloque appel à la fonction ?Bloqué sur des requetes SQL basiques dans Access
max_file_uploads bloqué à 20 avec MAMP 
Plus de sujets relatifs à : ebutant sur vba je bloque ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR