Macro extraction data avec cellules fusionnées Le sujet est résolu

Forum pour toutes vos questions à propos d'Excel (avec ou sans macros) ...
Sebol0187
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 4 février 2014
Version d'Excel : 2013

Message par Sebol0187 » 7 avril 2017, 13:04

Bonjour !

Je reviens avec un autre problème à soumettre.

J'ai un fichier excel de base, dont je souhaiterais faire une "extraction" de certaines colonnes pour l'envoyer à un collègue. Le problème est la présence de cellules fusionnées qui ne permet pas la copie, du coup je suis bloqué :/

J'ai cherché un peu partout, mais sans doute mal car pas de solutions trouvées :(

Dans le fichier en PJ, je souhaite juste :
1. Faire un filtre de mon tableau via la colonne ST9 en retirant les vides
2. Copier uniquement les colonnes ou j'ai mis "x" dans la première ligne (en pratique, ligne masquée), en partant de A5 jusqu'à l'infinité et l'au-delà...
3. Coller le tout dans un autre fichier en gardant le mise en page.

Merci pour vos indications les amis !

Olivier
Fichiers joints
Classeur1.xlsx
(18.32 Kio) Téléchargé 14 fois
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5703
Appréciations reçues : 56
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2004, 2011

Message par Dan » 7 avril 2017, 13:28

Bonjour
Le problème est la présence de cellules fusionnées qui ne permet pas la copie, du coup je suis bloqué :/
Et oui, je le dis au moins 1 x la semaine, évitez les cellules fusionnées. Cela n'apporte que des soucis
Dans votre fichier défusionnez la ligne 6 et 7, cela n'apporte rien de plus. Si c'est pour une belle présentation agrandissez la ligne 6

Essayez déjà avec ce code (attention si vous défusionnez les lignes6 et 7, mettez 7 à la place de 8 dans le code) :

Code : Tout sélectionner

Sub Macro1()
'Dan - 07/04/17 pour Sebol0187
ThisWorkbook.ActiveSheet.Copy After:=Sheets(1)
With ThisWorkbook.ActiveSheet
    For i = .Range("A" & .Rows.Count).End(xlUp).Row To 8 Step -1
        If .Range("I" & i) = "" Then Rows(i).Delete
    Next i
    .Range("A:H").EntireColumn.Delete
    .Range("K:L").EntireColumn.Delete
    .Move
End With
End Sub
Le code va faire le ménage dans votre feuille, puis déplacera votre feuille dans un nouveau classeur qu'il vous suffira de renommer

Si ok et terminé veillez à cocher la case verte à coté du bouton EDITER pour cloturer le fil lors de votre réponse

Cordialement
@+ Dan ;)
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 11263
Appréciations reçues : 157
Inscrit le : 4 avril 2013
Version d'Excel : 2013

Message par gmb » 7 avril 2017, 14:20

Bonjour à tous

Une variante.
Bye !
Fichiers joints
Classeur1 v1.xlsm
(33.68 Kio) Téléchargé 10 fois
Sebol0187
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 4 février 2014
Version d'Excel : 2013

Message par Sebol0187 » 7 avril 2017, 14:26

Merci pour votre rapidité !

La macro fonctionne super, merci +++

Ci-dessous le code complet

Code : Tout sélectionner

    Sub Macro1()
    'Dan - 07/04/17 pour Sebol0187
    ThisWorkbook.ActiveSheet.Copy After:=Sheets(1)
    With ThisWorkbook.ActiveSheet
        For i = .Range("A" & .Rows.Count).End(xlUp).Row To 8 Step -1
            If .Range("I" & i) = "" Then Rows(i).Delete
        Next i
        .Range("1:4").EntireRow.Delete
        .Range("B:H").EntireColumn.Delete
        .Range("K:L").EntireColumn.Delete
        .Move
    End With
    End Sub
Edit : Petit souci : les lignes vides en I sont également supprimés du fichier source, alors que je veux les conserver dans le fichier source et les supprimer dans le fichier d'extraction :/
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5703
Appréciations reçues : 56
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2004, 2011

Message par Dan » 7 avril 2017, 17:18

Re

Oups désolé.
Mettez juste un point devant ROW(i)

Cordialement
@+ Dan ;)
Sebol0187
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 4 février 2014
Version d'Excel : 2013

Message par Sebol0187 » 7 avril 2017, 17:53

C'est super, ce petit point a tout changé !

Une dernière et après j'arrête de vous embêter promis. Quand j'utilise la macro dans une classeur avec une feuille, pas de problème. Quand je l'utilise dans un classeur avec plusieurs feuilles et la même construction pour chacune, j'ai une erreur 400 sans précision.
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5703
Appréciations reçues : 56
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2004, 2011

Message par Dan » 10 avril 2017, 08:29

Re

En principe vous ne devriez pas avoir de problème. Mais il me faudrait savoir comment vous procéder
Vous repartez toujours de la même feuille ??

Cordialement
@+ Dan ;)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message