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 :

Effacer hors zone d'impression sans toucher données liées aux graphs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut Effacer hors zone d'impression sans toucher données liées aux graphs
    Bonjour,

    En fait j'ai une feuille qui contient en zone d'impression des graphs et les données de ces graphs se trouvent dans la zone hors impression. Ainsi j'aimerais avoir une macro qui va nettoyer tous ce qui est dans la zone HORS impression SAUF les données qui ont permis de générer les graphs

    J'ai déja fais une macro qui nettoie la zone hors impression mais dans les feuilles qui ne contiennent pas de graphs

    Pouvez vous m'aider svp?
    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie ceci (sur la feuille active), mais ça risque d'être long :

    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
    Sub test()
        Dim Plage As Range, Tabl As Variant, C As Range
        For Each graphe In ActiveSheet.ChartObjects
            For i = 1 To graphe.Chart.SeriesCollection.Count
                Tabl = Split(graphe.Chart.SeriesCollection(i).Formula, ",")
                For j = 1 To UBound(Tabl) - 1
                    If Tabl(j) <> "" Then
                        If Plage Is Nothing Then
                            Set Plage = Range(Tabl(j))
                        Else
                            Set Plage = Union(Plage, Range(Tabl(j)))
                        End If
                    End If
                Next
            Next i
        Next graphe
        Set Plage = Union(Plage, Range("Zone_d_impression"))
        For Each C In ActiveSheet.UsedRange
            If Intersect(C, Plage) Is Nothing Then C.ClearContents
        Next C
    End Sub
    Beaucoup plus rapide, à tester :

    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
    Sub test2()
        Dim Plage As Range, Tabl As Variant, C As Range
        Dim Tablo()
        ReDim Tablo(Cells.Find("*", , , , xlByRows, xlPrevious).Row, _
            Cells.Find("*", , , , xlByColumns, xlPrevious).Column)
        For Each graphe In ActiveSheet.ChartObjects
            For i = 1 To graphe.Chart.SeriesCollection.Count
                Tabl = Split(graphe.Chart.SeriesCollection(i).Formula, ",")
                For j = 1 To UBound(Tabl) - 1
                    If Tabl(j) <> "" Then
                        For Each C In Range(Tabl(j))
                            Tablo(C.Row, C.Column) = C.Value
                        Next C
                    End If
                Next
            Next i
        Next graphe
        [A1].Resize(UBound(Tablo, 1), UBound(Tablo, 2)).Value = Tablo
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut
    Bonjour Daniel.C

    Merci beaucoup pour ta réponse. Mais en fait ton code supprime tous les données qui ne sont pas liées aux graphs. Or moi je veux qu'il me supprime seulement les données qui ne sont pas liés aux graphs et qui ne sont pas dans la zone d'impression. La macro ne devra rien nettoyer dans la zone d'impression

    J'essaie de modifier ton code mais je n'y arrive pas

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Excuse-moi, je m'en étais aperçu et pensai avoir supprimé le message.

Discussions similaires

  1. Import de données quand zone d'impression sur fichier Excel
    Par jpIgrec31 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 23/06/2014, 11h57
  2. [XL-2007] Effacer Tout ce qui est Hors Zone d'Impression
    Par pasterlouis dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2013, 12h36
  3. [CTP4]Modifier le modele sans toucher aux données
    Par john85 dans le forum ASP.NET MVC
    Réponses: 4
    Dernier message: 12/07/2011, 09h45
  4. Crypter transit des données sans toucher au code source
    Par thecrafty dans le forum Protocoles
    Réponses: 2
    Dernier message: 08/06/2007, 17h31
  5. base de données liée aux saison
    Par judor31 dans le forum Schéma
    Réponses: 2
    Dernier message: 10/04/2007, 10h50

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