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 :

Copier certaines cellules d'une ligne si conditions remplies.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    travailleur
    Inscrit en
    Juillet 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : travailleur

    Informations forums :
    Inscription : Juillet 2018
    Messages : 76
    Par défaut Copier certaines cellules d'une ligne si conditions remplies.
    Bonjour,

    Je voudrais faire une macro qui va copier certaines cellules (par exemple les cellules des colonnes A, D, F, H de la ligne) d'une ligne de ma feuille de départ ("feuil1") vers une autre feuille ("feuil2") si des conditions sont remplies. En partant avec le code ci-dessous, je suis capable de copier la ligne entière ou une cellule mais pas certaines cellules seulement.

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    DERNIERELIGNE = Range("B" & Rows.Count).End(xlUp).Row
    For I = 2 To DERNIERELIGNE
        If Cells(I, 11) = "texte1" And Cells(I, 13) = "texte2" Then
     
        End If
    Next
     
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    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
    Sub test()
        Dim Lig As Long, I As Long
        Dim WS1 As Worksheet, WS2 As Worksheet
     
        Set WS1 = Worksheets("feuil1")
        Set WS2 = Worksheets("feuil2")
        Lig = 2
        For I = 2 To WS1.Range("B" & Rows.Count).End(xlUp).Row
            If WS1.Cells(I, 11) = "texte1" And WS1.Cells(I, 13) = "texte2" Then
                WS1.Cells(I, "A").Copy WS2.Cells(Lig, "A")
                WS1.Cells(I, "D").Copy WS2.Cells(Lig, "B")
                WS1.Cells(I, "F").Copy WS2.Cells(Lig, "C")
                WS1.Cells(I, "H").Copy WS2.Cells(Lig, "D")
                Lig = Lig + 1
            End If
        Next I
     
    End Sub
    En partant avec le code ci-dessous, je suis capable de copier la ligne entière ou une cellule
    Il est peu probable que le code que tu as présenté copie quoi que ce soit.

  3. #3
    Membre confirmé
    Homme Profil pro
    travailleur
    Inscrit en
    Juillet 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : travailleur

    Informations forums :
    Inscription : Juillet 2018
    Messages : 76
    Par défaut
    Bonjour Menhir,
    Je vais tester ton code demain. Quand je disais avec ce code, j'avais retiré la partie après le Then.

    Merci en tout cas car tu réponds souvent à mes demandes.

    PS: J'allais chercher les titres des dites colonnes qui sont sur la première ligne par une autre macro. Existe-t-il un moyen de les intégrer par cette macro pour faire un truc plus propre?

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Guizmonster Voir le message
    Quand je disais avec ce code, j'avais retiré la partie après le Then.
    C'était juste histoire de compliquer la tâche de ceux qui se pencheront sur ton problème ?

    PS: J'allais chercher les titres des dites colonnes qui sont sur la première ligne par une autre macro. Existe-t-il un moyen de les intégrer par cette macro pour faire un truc plus propre?
    Copier les lignes 10 à 14 avant le For To en remplaçant I par 1.

  5. #5
    Membre confirmé
    Homme Profil pro
    travailleur
    Inscrit en
    Juillet 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : travailleur

    Informations forums :
    Inscription : Juillet 2018
    Messages : 76
    Par défaut
    Cela marche parfaitement.

    Néanmoins je vais chercher ces données dans un tableau donc le .copy recopie également la mise en forme du tableau. Existe-t-il une possibilité de ne recopier que les valeurs ou texte?

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Au moins deux solutions (il en existe certainement plus).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WS2.Cells(1, "A") = WS1.Cells(1, "A")
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WS1.Cells(1, "A").Copy : WS2.Cells(1, "A").PasteSpecial(xlPasteValue)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Google Sheets] Copier certaines cellules vers une autre sheet
    Par Rootsman32 dans le forum APIs Google
    Réponses: 0
    Dernier message: 27/09/2019, 15h40
  2. Réponses: 6
    Dernier message: 11/12/2018, 19h25
  3. [XL-2010] Copier certaines cellules dans autre feuille sous condition
    Par Oceaneantoine dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/12/2017, 14h01
  4. Réponses: 2
    Dernier message: 13/05/2015, 10h44
  5. Copier les cellules d'une ligne sélectionnée sur une autre feuille
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/07/2013, 20h19

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