Copier ligne(s) sous condition dans une autre feuille [Résolu/Fermé]

Signaler
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
-
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
-
Bonsoir la communauté ^^

J'ai cherché d'abord un moyen sans macro, mais n'ai pas trouvé. J'aurais préféré, mais les macros ne me dérangeront pas :)
Je cherche donc à copier des lignes contenant un terme exact d'une feuille à l'autre, et ce, pour trois termes différents.
J'ai bien trouvé ceci, https://forums.commentcamarche.net/forum/affich-28651561-macro-excel-copier-une-ligne-sous-condition mais je ne parviens pas l'adapter à mon fichier

L'idée c'est que lorsque dans la colonne A de la feuille Subventions 2017 il est inscrit strictement "Associations subventionnées en 2016 sans demande 2017", toute la ligne soit copier et coller dans la première ligne vide de la feuille "Subs 2016 sans demande 2017".
En poursuivant, toujours dans la colonne A de la feuille Subventions 2017, lorsqu'il est inscrit strictement "Associations subventionnées en 2016 avec demande 2017", toute la ligne soit copier et coller dans la première ligne vide de la feuille "Subs 2016 et demande 2017".
Idem pour les nouvelles demandes.
Il faudrait que les associations dont le contenu de la colonne A passent de "pas de demande 2017" à "demande 2017" soient supprimés de la feuille "pas de demande" et copier dans la feuille "demande 2017".

Je vous remercie d'avance infiniment pour votre aide ^^

EDIT : le fichier en question : https://www.cjoint.com/c/FLmsEBjh7Ti


Bien à vous,
Naï
ps: je surveille tous mes sujets non résolus, si solution vous avez, je la lirais à coup sûr :)

4 réponses

Messages postés
12213
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 septembre 2020
688
Tu veux copier les lignes, ou bien les déplacer?
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
48
Bonsoir ^^
Les copier seulement. Les associations inscrites dans la feuille Subventions 2017 ne doivent pas disparaître.

EDIT: Je serais même amener à ajouter ou supprimer des lignes, mais manuellement.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 149
Bonjour,

Voilà ton classeur avec la copie :

https://www.cjoint.com/c/FLmvXMuhg4l

Idem pour les nouvelles demandes.
Pour ceci je ne vois pas ce que tu souhaites
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
48
Bonjour et merci pour cette proposition ^^
Comme indiqué à yg_be, je me suis trompé. Il ne s'agit pas d'une copie complète de ligne, mais des colonnes B à O de la feuille Subventions 2017 vers les colonnes A à N sur les trois autres feuilles. La colonne A de la feuille Subventions 2017 ne sert que d'indicateur où placer les associations. Du coup, il y a un décalage d'une colonne sur les feuilles de destination.

"Idem pour les nouvelles demandes."
Pour ceci je ne vois pas ce que tu souhaites
Il s'agit d'appliquer la même chose pour les associations dont la colonne A de la feuille Subventions 2017 est "Nouvelles demandes 2017". Dans l'exemple du fichier envoyé il n'y en a pas. Mais dans la feuille Subventions 2017, colonne A, il s'agit d'une liste en validation de données avec trois propositions. Les deux premières sont traitées dans ta proposition, mais pas la troisième en effet. J'ai compris le système et ajouté :
Case "Nouvelles demandes 2017"
sht = "Nouvelles demandes 2017"


Selon vos deux propositions, je vais chercher une solution pour :
"supprimer les lignes 7 à dernière ligne vide en prenant en compte la colonne A pour les feuilles :
- Subs 2016 et demande 2017,
- Subs 2016 sans demande 2017,
- Nouvelles demandes 2017

Pour l'appeler juste avant l’exécution des macros "transfert" et "nai" des deux fichiers.

Merci encore beaucoup ^^
Messages postés
12213
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 septembre 2020
688
Je propose ceci :
Option Explicit
Sub nai()
Dim numligne As Long, numdest As Long
Dim dest As String
Const ca As String = "Associations subventionnées en 2016 sans demande 2017"
Const fa As String = "Subs 2016 sans demande 2017"
Const cb As String = "Associations subventionnées en 2016 avec demande 2017"
Const fb As String = "Subs 2016 et demande 2017"
numligne = 1
Do While Worksheets("Subventions 2017").Cells(numligne, 1) <> ""
    Select Case Worksheets("Subventions 2017").Cells(numligne, 1)
        Case ca:
            dest = fa
        Case cb:
            dest = fb
        Case Else:
            dest = ""
    End Select
    If dest <> "" Then
        numdest = Worksheets(dest).Cells(5, 1).End(xlDown).Row + 1
        Worksheets("Subventions 2017").Rows(numligne).Copy _
            Worksheets(dest).Rows(numdest)
        Worksheets("Subventions 2017").Rows(numligne).EntireRow.Delete
    Else
        numligne = numligne + 1
    End If
Loop 'Do While Worksheet("").Cells(numligne, 1) <> ""
End Sub


Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
48
Bonjour et merci !
J'ai placé la macro dans la feuille Subventions 2017
Ca fonctionne, mais les lignes de la feuille Subventions 2017 sont supprimées, ce qui ne m'arrange pas ^^ J'ai essayé de modifier la ligne 23 du code (le fameux "Delete"), en vain.
Je m'aperçois également qu'il ne s'agit en fait pas d'une copie complète de ligne. En effet, la colonne A de la feuille Subventions 2017 n'a pour but que d'indiquer où placer l'association. En fait, ce sont les colonnes B à O qui devraient être copiées dans les colonnes A à N. La colonne A des autres feuilles à compléter est en fait la colonne B de la feuille Subventions 2017.

Merci encore de ton aide ! ^^
Messages postés
12213
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 septembre 2020
688
Code adapté :
Option Explicit
Sub nai()
Dim numligne As Long, numdest As Long
Dim dest As String
Const ca As String = "Associations subventionnées en 2016 sans demande 2017"
Const fa As String = "Subs 2016 sans demande 2017"
Const cb As String = "Associations subventionnées en 2016 avec demande 2017"
Const fb As String = "Subs 2016 et demande 2017"
numligne = 1
Do While Worksheets("Subventions 2017").Cells(numligne, 1) <> ""
    Select Case Worksheets("Subventions 2017").Cells(numligne, 1)
        Case ca:
            dest = fa
        Case cb:
            dest = fb
        Case Else:
            dest = ""
    End Select
    If dest <> "" Then
        numdest = Worksheets(dest).Cells(5, 1).End(xlDown).Row + 1
        Range(Worksheets("Subventions 2017").Cells(numligne, 2), _
            Worksheets("Subventions 2017").Cells(numligne, 15)).Copy _
            Range(Worksheets(dest).Cells(numdest, 1), Worksheets(dest).Cells(numdest, 14))
        'Worksheets("Subventions 2017").Rows(numligne).EntireRow.Delete
    End If
    numligne = numligne + 1
Loop 'Do While Worksheet("").Cells(numligne, 1) <> ""
End Sub
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
48
Parfait.
J'ai également corrigé pour prendre en compte les nouvelles demandes :
Const cc As String = "Nouvelles demandes 2017"
Const fc As String = "Nouvelles demandes 2017"

et :
Case cc:
dest = fc


C'est un gros changement de ne pas copier la ligne entière comme indiqué dans le précédent commentaire ? Au pire, il reste possible de cacher la colonne A et d'en ajouter une autre pour la vraie catégorie de l'association, mais bon ^^
Messages postés
12213
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 septembre 2020
688
Le code que j'ai posté à 14h02 copie les bonnes colonnes (je pense), ce sont juste les lignes 22 à 24 du code qui changent.
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
48
Très bien ^^
J'ai trouvé ce qu'il faut pour supprimer les lignes avant l'exécution de la macro.
Il ne me reste plus qu'à trouver comment ne pas imprimer la feuille Subventions 2017 lorsque Ctrl+P est frappé ou Fichier -> Imprimer est cliqué :)

Merci encore !
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
48
Coucou la communauté ^^
Je poursuis le sujet, puisqu'il est lié, mais s'il faut en créer un nouveau, je le ferais.

Le fichier a quelque peu été adapté, notamment par rapport au MFC, mais j'ai un problème qui, je pense, ne doit pas être lié aux MFC.
En effet, la catégorie "Nouvelles demandes" ne semble pas être pris en compte. Enfin, si, mais juste une entrée :/
Quelqu'un peut-il jeter un oeil aux macros et me dire ce qui cloche ? :)

Fichier : https://www.cjoint.com/c/GAEl0AGQqH2

Merci d'avance :)
Bien à vous,
Naï
ps: je surveille tous mes sujets non résolus, si solution vous avez, je la lirais à coup sûr :)
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
48