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

Excel Discussion :

Déplacer une ligne d'une feuille si une condition est vraie dans une autre feuille


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Déplacer une ligne d'une feuille si une condition est vraie dans une autre feuille
    Voici mon problème je souhaite couper une ligne dans la feuille source pour la coller dans la feuille final.
    La sélection de la ligne a couper est sélectionner avec la condition suivante "si dans le tableau trains vapeur dans la

    colonne F une cellule contient la valeur V alors couper cette ligne est la coller dans la feuille final. A l'aide d'une

    boucle effectuée le test sur l'ensemble des lignes et déplacer ces lignes si la condition est réunie.

    PS : désolé pour ma dernière formulation mal formulée.

    En attente réponse sincères remerciements. Lekann74
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Pour scruter la valeur d'une cellule, on utilise l'objet Cells(x,y).Value, x et y étant les coordonnées de la cellule.
    Pour faire un test, on utilises la commande If
    Pour couper une ligne (en vue de la copier ailleurs), on utilise la méthode Cut de l'objet Rows(x), x désignant le numéro de ligne.
    Pour coller une ligne coupée, utiliser la méthode Paste ou la méthode Insert toujours appliquée à un objet Row.
    Pour faire une boucle, utiliser la commande For to.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre expérimenté
    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
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour

    Non pas de la Vapeur mais un peu de VBA ....
    Oui, en plus de ce qu'a dit Menhir (et qui est donc gravé dans la pierre )on peut aussi facilement en passant par un filtre sur 'v' et de transférer les lignes visibles après filtrage. Voir les différents supports sur les filtres sur ce site en cas de besoin .....

    Voir exemple ci-dessous, que j'ai volontairement laissé un peu à affiner .....

    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
    36
    37
    38
    Option Explicit
     
    Sub FilTest()
    Call SetFiltValue(4, "v")
    'Attention: il faut insérer une ligne après la 3 (Train vapeur)
    End Sub
    Sub SetFiltValue(Optional ColVal As Integer, Optional FiltVal As Variant)
     
    Dim InpRng As Range, FiltRng As Range
     
        Call Remove_Autofilter(Worksheets("Source"))
        Set InpRng = Worksheets("Source").Range("C5").CurrentRegion
        Debug.Print InpRng.Address
     
        If ColVal > 0 And Not (IsMissing(FiltVal)) Then
            InpRng.AutoFilter Field:=ColVal, Criteria1:=FiltVal
            Else: InpRng.AutoFilter
        End If
     
        ' On ne prend pas la ligne de titre et on récupère les cellules visibles après filtrage
        Set FiltRng = InpRng.Offset(1, 0).Resize(InpRng.Rows.Count - 1, InpRng.Columns.Count).SpecialCells(xlCellTypeVisible)
     
        Debug.Print FiltRng.Address, InpRng.Address
     
        FiltRng.Copy Destination:=Worksheets("Final").Range("A1")
     
        ' Si l'on veut supprimer les enregistrements de la feuille d'origine (non testé)
        FiltRng.EntireRow.Delete
     
     
    End Sub
     
    Sub Remove_Autofilter(Optional Wsh As Worksheet)
     
        If IsMissing(Wsh) Then Set Wsh = ActiveSheet
        If Wsh.AutoFilterMode = True Then Wsh.AutoFilterMode = False
     
    End Sub
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/03/2015, 10h27
  2. MACRO de copie d'une feuille dont le nom est contenu dans une cellule
    Par youssy dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/03/2015, 14h33
  3. MACRO de copie d'une feuille dont le nom est contenu dans une cellule
    Par youssy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/03/2015, 19h39
  4. [XL-2007] Sélectionner une feuille dont le nom est contenu dans une cellule
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/06/2014, 20h47
  5. Réponses: 1
    Dernier message: 15/04/2007, 20h09

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