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 :

macro copier ligne sous condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut macro copier ligne sous condition
    bonjour,

    j'ai fait un peu de VBA en cours mais c'était il y a très longtemps et la je bloque.

    j'aurais besoin de faire une copie de ligne sous condition.

    je m'explique

    j'ai une liste de nom en colonne A1 10 noms

    en colonne C , D , E , F , j'ai des couleurs

    le but est que

    - si le mouton est de couleur violet , je voudrais copier la ligne complète dans une feuille nommée violet
    - si le cheval est de couleur noir , je voudrais copier la ligne complète dans une feuille nommée noir

    je connais la fonction copier OK
    mais j'ai du mal a mixer la condition avec la copier.

    merci de vos conseils

  2. #2
    Membre éprouvé Avatar de Neutthsch
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2016
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 105
    Par défaut
    Salut,

    Si j'ai bien compris l'idée, voilà qui devrait répondre à ton besoin. A adapter à ce que tu veux bien sur

    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
    Sub Couleur()
     
    For a = 1 To 6 'boucle sur tes lignes de a à (remplacer x par la dernière ligne)
        For b = 3 To 6 'boucle sur les colonnes qui contiennent les couleurs (c,d,e et f)
            For Each Feuille In ActiveWorkbook.Sheets
                If Feuille.Name = ActiveSheet.Cells(a, b) Then
                    DerniereLigne = Feuille.Range("A" & Rows.Count).End(xlUp).Row
                    For i = 1 To 6 ' i representant les cellules que tu veux copier
                        Feuille.Cells(DerniereLigne + 1, i) = ActiveSheet.Cells(a, i)
                    Next
                End If
            Next
        Next
    Next
     
     
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    je vais recommencer car je me suis mal exprimé et je m'en excuse.

    j'ai mis en pièce jointe un exemple.

    je souhaite mettre une liste de prénom dans la colonne A.

    et j'aimerais copier la ligne A3 michel -pierre dans une nouvelle feuil michel.

    pareil pour la ligne A4 andre -pierre dans la feuille andre

    jusqu'a la ligne A6 maxime dans la feuille autres
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Citation Envoyé par explosion Voir le message
    je souhaite mettre une liste de prénom dans la colonne A.
    et j'aimerais copier la ligne A3 michel -pierre dans une nouvelle feuil michel.
    pareil pour la ligne A4 andre -pierre dans la feuille andre
    jusqu'a la ligne A6 maxime dans la feuille autres
    Bonjour, ça serait sympa (suggestion) que vous relisiez votre demande.... en tout cas, elle ne me parait pas claire
    Vous voulez copier la ligne ou la cellule Axx
    Où dans la feuille destination? 1ère ligne? Quid des éventuels éléments déjà présents?

    Exemple de code, à adapter certainement (testé):
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Test_Copie()
     
    Dim WshN As String
    Dim InpRng As Range, Cl As Range
    Dim ClContAR As Variant
     
        Set InpRng = ThisWorkbook.Worksheets("Adresse mails").Range("A2").CurrentRegion
        Debug.Print InpRng.AddressLocal
     
        For Each Cl In InpRng.Columns(1).Cells
     
            If Not (IsEmpty(Cl)) Then
     
                ClContAR = Split(Cl.Value, " - ", , vbTextCompare)  ' On Split la valeur sur le séparateur " - "
     
                If UBound(ClContAR, 1) <> LBound(ClContAR, 1) Then      'On vérifie que le split a fonctionné = au moins deux éléments
                    WshN = LCase(ClContAR(LBound(ClContAR, 1)))
     
                    On Error Resume Next
                    If IsObject(Worksheets(WshN)) = False Then          ' Si la feuille n'existe pas, on la crée
     
                        ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = WshN
     
                    End If
     
                    Debug.Print Cl.Row; InpRng.Rows(Cl.Row).Address
                    InpRng.Rows(Cl.Row).EntireRow.Copy Destination:=Worksheets(WshN).Range("A1")
     
                End If
     
            End If
     
        Next Cl
     
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    j'ai trouvé une solution pour vous expliquer

    une tableau avant
    un tableau après
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Vous pouvez essayer qquechose comme
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub Test_Copie()
     
    Dim WshN As String
    Dim InpRng As Range, Cl As Range
    Dim ClContAR As Variant
     
        Set InpRng = ThisWorkbook.Worksheets("Adresse mails").Range("A2").CurrentRegion
        Debug.Print InpRng.AddressLocal
     
        For Each Cl In InpRng.Columns(1).Cells
     
            If Not (IsEmpty(Cl)) Then
     
                ClContAR = Split(Cl.Value, " - ", , vbTextCompare)  ' On Split la valeur sur le séparateur " - "
     
                If UBound(ClContAR, 1) <> LBound(ClContAR, 1) Then      'On vérifie que le split a fonctionné
                    WshN = LCase(ClContAR(LBound(ClContAR, 1)))
     
                    On Error Resume Next
                    If IsObject(Worksheets(WshN)) = False Then          ' Si la feuille n'existe pas, utilise 'Autres'
     
                         WshN = "Autres"
     
                    End If
     
                    Cl.Copy Destination:=Worksheets(WshN).Range("A1")
     
                End If
     
            End If
     
        Next Cl
     
    End Sub

  7. #7
    Membre éprouvé Avatar de Neutthsch
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2016
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 105
    Par défaut
    Bon ben c'est bien le code que je t'ai envoyé, j'avais bien compris, il est à coller dans le module de la page adresse mail, tu l'as essayé?

Discussions similaires

  1. [XL-2010] MACRO Copier coller sous conditions
    Par DEMERSE dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/01/2015, 21h50
  2. [XL-2007] Macro copier coller sous condition date
    Par isolf dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/07/2014, 18h32
  3. copier/coller lignes sous condition colonne vers autre feuille
    Par juniorglobal08 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/05/2009, 17h29
  4. [XL-2003] Copier coller une ligne sous condition
    Par geraldferri dans le forum Excel
    Réponses: 12
    Dernier message: 21/04/2009, 11h17
  5. copier des lignes sous conditions (dans 2 colonnes différentes)
    Par olive08 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 12/10/2007, 14h44

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