IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Modification macro pour utiliser couleur et nom comme critere


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Points : 105
    Points
    105
    Par défaut Modification macro pour utiliser couleur et nom comme critere
    Bonjour tout le monde,

    J'ai une macro qui transfere des donnees d'une feuille a une autre .
    Sur la feuille1 il y a des references (certaines sont identiques) auquelles correspondent une valeur. Pour toutes les references identique (EX :12345) il y a une ligne supplementaire (avec la meme reference, donc 12345) dans laquelle je calcule la somme des valeurs correspondant (ici la somme des veleurs affectees a la reference 12345). Cette ligne se distingue des autres par sa couleur.

    J'aimerais donc transferer le resultat de la ligne en couleur sur une autre feuille (feuille2) qui elle contient deja les noms des references de couleur.
    Il faut donc que je fasse une recherche par le nom et par la couleur pour ne renvoyer qu un seul resultat a la fois.

    Voici le code qui fonctionne avec la recherche par nom, mais je ne sais pas bien ou inserer le critere de couleur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub Transfertresultat()
     
    Dim Datenbasis As Worksheet
    Dim Tabelle1 As Worksheet
    Dim c As Range
    Dim D As Range
     
    Set Datenbasis = Worksheets("Datenbasis IST-Stunden")
    Set Tabelle1 = Worksheets("Tabelle1")
    For Each c In Tabelle1.Range("C3:C" & Tabelle1.Cells(Rows.Count, 3).End(xlUp).Row)
        With Datenbasis.Range("F2:F" & Datenbasis.Cells(Rows.Count, 6).End(xlUp).Row)
          Set D = .Find(c.Value, LookIn:=xlValues, lookat:=xlWhole)
          If Not D Is Nothing Then
     
            Tabelle1.Range(c.Address).Offset(0, 11) = Datenbasis.Range(D.Address).Offset(0, 2)
          End If
        End With
    Next
    Set Datenbasis = Nothing
    Set Tabelle1 = Nothing
     
    MsgBox "Makro 2 wurde erfolgreich ausgeführt"
    End Sub

  2. #2
    Membre régulier
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Points : 105
    Points
    105
    Par défaut
    je pense qu'il faut que j'insere une nouvelle condition du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set D = .Find(c.Value, LookIn:=xlValues, lookat:=xlWhole)
    
               If D.Interior.Color = 10092543 then
    
          If Not D Is Nothing Then
    Mais en faisant comme ca cela ne marche pas.
    Je peux egalement uploader un fichier sio ca peut aider a la comprehension de mon probleme.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Bonjour,

    Voici l'ensemble des paramètres existants de la fonction .Find :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Find(What:="TrucMucheRecherché", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
    De ton côté tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set D = .Find(c.Value, LookIn:=xlValues, lookat:=xlWhole)
    Si je comprends bien, tu veux .Find/trouver non seulement la valeur de c (c.Value) mais aussi sa couleur ?

    On dirait que le SearchFormat correspond à ce que tu souhaites, qu'en dis-tu ?

    Il ne te resterait alors qu'à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set D = .Find(c.Value, LookIn:=xlValues, lookat:=xlWhole,,,,SearchFormat:=True)
    ou quelque chose du genre (je ne sais plus si j'ai bien mis les virgules).

    Ainsi ton .Find cherchera la valeur de ton c mais aussi son format et donc sa couleur au passage ()encore faut-il que cela soit formaté pareil : Bold/Italic/Police.

    Sinon, si tu veux faire plus simple mais moins "propre", tu mets une condition dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not D Is Nothing Then 
     
    End If
    Une simple If D.Font.Color = Then si tu parles de la couleur dans laquelle est écrit ton truc. Sinon, tourne toi du côté de la couleur de la cellule.

    Bonne chance pour la suite.
    DeaD

  4. #4
    Membre régulier
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Points : 105
    Points
    105
    Par défaut
    en fait le resultat qui m interesse est sur la ligne dont la cellule est de la couleur que je recherche.
    EDIT :

    J'ai essaye avec SearchFormat et ca ne change pas mon probleme.
    Quant a rajouter un If dans la boucle avec le Set, j'ai essaye mais ca ne fait plus fonctionner la macro.

    Actuellement la macro tourne, mais des qu'elle trouve une correspondance elle prend cette valeur la.

    Je joins le fichier pour que ce soit plus clair.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2007] Modification macro pour selection d'une plage de données
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/03/2010, 07h34
  2. Réponses: 7
    Dernier message: 26/12/2009, 14h17
  3. [XL-2003] Macro pour utiliser des données Excel dans un document Word
    Par Jeremy0269 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/07/2009, 18h58
  4. Modif macro pour ne pas copier le bouton
    Par Bernard67 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/02/2008, 11h47
  5. Modification macro pour imprimer de telle a telle page
    Par Bernard67 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/01/2008, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo