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 :

Extraire ligne avec police en rouge


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Par défaut Extraire ligne avec police en rouge
    Bonjour,

    Je suis un débutant et je n'arrive pas à trouver une macro qui me permettrais de balayer toutes les lignes de mon classeur (plusieurs onglets).
    Lorsqu'une ligne possède une police rouge dans une cellule alors la ligne correspondante doit être copiée dans un nouvel onglet "Bilan" par exemple.

    Si vous pouvez me filer un coup de main ?

    Je vous remercie d'avance...

    Coincoin22

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(X,X).Font.ColorIndex = 3 then Cells(X,X).EntireRow.Copy Destination:= Worksheets("Bilan").Cells(Y,Y)
    Avec ça tu testes si ce qui est écrit dans la cellule de coordonnées X;X est en rouge et si c'est vrai ça te copie toute la ligne dans la feuille Bilan dans la Cellule de coordonnées Y;Y.

    Après si tu veux chercher dans tous le classeurs, je ne sais que chercher feuille par feuille...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Par défaut
    Merci mais je ne sais pas trop comment mettre en forme dans une macro, ce que tu viens de me dire. Je comprends bien mais il faut que la macro balaie toutes les lignes de mon classeur.

    Je suis vraiment débutant... Merci encore !

    Coincoin22

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut
    Y a pas de souci. Moi aussi je debute en VBA.

    Si tu veux parcourir toutes les lignes de ton classeur tu peux ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim C as Range declare la variable C comme une plage de cellules
    
    For each C in Range("A1:Z" & Cells(Rows.Count,26).End(xlUp).Row)
        If C.Colorindex = 3 Then
        C.Copy Destination:= Worksheets("Bilan").Cells(1,1)
        End If
    Next
    ici, je te fais balayer ta feuille de la cellule A1 a Z quelquechose. Ce qui vien tapres le & permet de trouver la premiere ligne vide et donc de clore la zone de recherche.
    Ensuite c'est comme ce que j'avais ecris dans mon poste precedent.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Par défaut
    Que signifie le 26 ?

    Ta macro fonctionne mais seule la cellule est copiée et non la ligne entière. Lorsqu'il y a deux cellules rouge sur deux lignes différentes, il écrase la cellule dans l'onglet bilan car on lui impose d'écrire dans la case (1,1).

    J'ai fait un truc comme ça qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim C As Range
    I = 1
    For Each C In Range("A1:T2893" & Cells(Rows.Count, 26).End(xlUp).Row)
        If C.Font.ColorIndex = 3 Then
        I = I + 1
        C.EntireRow.Copy Destination:=Worksheets("bilan").Cells(I, 1)
        End If
    Next

  6. #6
    Membre confirmé
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut
    Le 26 correspond au numero de la colonne Z. 1 pour A, 2 pour B etc

Discussions similaires

  1. SORT - Extraire lignes avec date du jour
    Par Metalman dans le forum JCL - SORT
    Réponses: 10
    Dernier message: 11/03/2014, 16h51
  2. Supprimer lignes si police rouge
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/03/2013, 10h14
  3. Réponses: 4
    Dernier message: 15/09/2010, 16h19
  4. Extraire des lignes avec une formule
    Par maxxxime dans le forum Excel
    Réponses: 9
    Dernier message: 15/06/2010, 17h05
  5. Extraire une valeur d'une ligne avec sed
    Par jojolepabo dans le forum Linux
    Réponses: 6
    Dernier message: 27/10/2004, 09h34

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