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 uniquement des cellules non vides sur un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lyon
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lyon
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Copier uniquement des cellules non vides sur un autre classeur
    Bonjour

    J'ai deux problèmes et j ai besoin de votre aide car je débute depuis peu...

    1) j'aimerai que dans une certaine plage de cellules lorsque ma macro copie les cellules seul les cellules ayant "quelque-chose" dedans soit collé (texte et/ou nombres)

    2) Et si possible que la macro se déclenche (ou a que dans le code la macro colle) uniquement si la plage (k6:O36) à été modifier par l'utilisateur (si c'est pas possible ce n'est pas grave )

    voici ma macro :

    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
    Sub fermeture()
     
    '
    ' fermeture Macro
     
    'Macro lancé à la fermeture du fichier “tableau de bord”
     
        Workbooks.Open Filename:="\Dossier1\Dossier2\ TableauSuivi.xlsx"
        Windows("Tableau de bord.xlsm").Activate
        Range("K6:O36").Select
        Selection.Copy
        Windows("TableauSuivi.xlsx").Activate
        Rows("6:6").Select
        Selection.Insert Shift:=xlDown
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        Windows("TableauSuivi.xlsx").Activate
        Application.DisplayAlerts = False
        ActiveWorkbook.Save
        ActiveWindow.Close False
        Windows("Tableau de bord.xlsm").Activate
        Range("A1").Select
     
    End Sub
    Voila, c'est la seconde fois que je réclame votre aide, j'espère ne pas en abusé. J'ai recherché un peu sur le net mais je n'ai rien trouvé de concluant...

    Merci d'avance^^

    Bien à vous,

    Tonufrost

    (PS : j'ai bien pris connaissance de l'avertissement concernant le bouton "résolu" en bas de page et tacherai de l'utilisé pour les prochaines fois)

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour.

    1) Voir dans l'aide VBA intégrée du côté de la méthode Range.SpecialCells associée à la méthode Range.Copy.


    2) Dans le module de la feuille de calculs concernée, en haut de la fenêtre de code en place de (Général)
    sélectionner Worksheet puis à sa droite en place de SelectionChange sélectionner l'évènement Change.

    L'objet Target retournant la plage des cellules modifiées, utiliser la méthode Intersect pour contrôler la correspondance …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lyon
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lyon
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour Marc

    Merci d'avoir répondu mais je n'arrive pas a faire marcher la macro...
    Voila ce que j'ai pondu avec mes faibles skills :

    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
    Sub fermeture()
    '
    ' fermeture Macro
    '
     
    '
        Workbooks.Open Filename:="\\Dossier\Dossier2\TableauSuivi.xlsx"
        Windows("Tableau de bord.xlsm").Activate
        Range("K6:O36").SpecialCells(xlCellTypeVisible).Select
        Range.SpecialCells(xlCellTypeVisible).Copy
        Windows("TableauSuivi.xlsx").Activate
        Rows("6:6").Select
        Selection.Insert Shift:=xlDown
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        Windows("TableauSuivi.xlsx").Activate
        Application.DisplayAlerts = False
        ActiveWorkbook.Save
        ActiveWindow.Close False
        Windows("Tableau de bord.xlsm").Activate
        Range("A1").Select
     
    End Sub
    Ensuite pour ma seconde question, j ai fais cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Dim Plage As Range
    Set Plage = Range("K6:O36")
     
     
    If Application.Intersect(Target, Plage) Is Nothing Then
     
    End If
     
     
    End Sub
    Cependant je n ai pas pu tester la macro comme la première ne fonctionne pas...

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,
    Pour ton problème 1, plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Windows("Tableau de bord.xlsm").Activate
        Range("K6:O36").SpecialCells(xlCellTypeFormulas).Select
        Range.SpecialCells(xlCellTypeVisible).Copy
    je pense que tu devrais passer par ceci (s'il il n'y a pas de formule)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Workbook("Tableau de bord.xlsm").Range("K6:O36").SpecialCells(xlCellTypeConstants).Copy
    en évitant les "Select", mais dans ton code, je ne vois pas où coller, tu ne le dis pas

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Lyon
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lyon
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    En réalité je ne colle pas, j'insert les lignes pour que le second tableau s'alimente au fur et à mesure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Windows("TableauSuivi.xlsx").Activate
        Rows("6:6").Select
        Selection.Insert Shift:=xlDown
        Application.CutCopyMode = False

Discussions similaires

  1. [XL-2013] Copier/Coller plage de cellules non-vides vers un autre classeur
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/06/2015, 15h52
  2. Réponses: 17
    Dernier message: 27/02/2014, 21h29
  3. Nouveau Problème sur le comptage des cellules NON VIDES
    Par tyndare36 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/02/2014, 18h18
  4. [XL-2003] action sur des cellules non vides
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/05/2009, 15h33
  5. Somme des cellules non vides en VBA
    Par baldg dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/03/2008, 00h44

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