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 :

Préserver le contenu du clipboard en effaçant une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 47
    Points : 34
    Points
    34
    Par défaut Préserver le contenu du clipboard en effaçant une cellule
    Bonjour,

    Je souhaiterais créer une macro qui efface les données d'une page puis colle de nouvelles données. Mais j'ai l'impression que l'effacement des données existantes supprime du même coup le contenu du presse papier. Du coup, il faut que l'utilisateur efface les données, copie les nouvelles et utilise la macro pour les coller.

    Une idée pour effacer puis coller de nouvelles données en un clic ?

    Bonne journée à tous.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu...!!!
    bonjour

    j'ai beau essayer de deviner mais milles excuse avec les quelques neurones qu'il me reste je n'arrive pas a saisir ce que tu veux

    pourrais tu t'expliquer voir même un peu de code serait le bien venu

    tu copie quoi,ou, comment ???


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 47
    Points : 34
    Points
    34
    Par défaut
    Bonjour Patrick,

    Désolé pour cette réponse tardive, quelques contretemps persos...

    Pour l'instant, j'ai deux macros. La première efface les données existantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Arrow").Rows("2:36000").Delete Shift:=xlUp
    La seconde colle une plage de cellules qu'un utilisateur a copié manuellement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [a5].PasteSpecial Paste:=xlPasteValues
    [a5].PasteSpecial Paste:=xlPasteFormats
    J'aimerais si possible n'avoir qu'une seule macro, qui efface puis colle. Problème : quand Excel efface il "perd" le contenu du presse papier, donc impossible de coller.

    J'espère que c'est un peu plus clair...

    Merci beaucoup pour ton aide.

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Une solution sans utiliser le presse papier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim rg As Range
    Set rg = Selection
     
     
    Cells.Delete xlUp
     
    Range("A1").Resize(rg.Count, rg.Columns).Value = rg.Value
    Jérôme

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 47
    Points : 34
    Points
    34
    Par défaut
    Merci pour ta réponse.

    Sur tes conseils, j'ai écris ça :

    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
    Sub Delete_Paste_Arrow()
     
    Application.ScreenUpdating = False
     
    'Affecter les données copiées à une variable
     
    Dim rg As Range
    Set rg = Selection
     
    'Effacer les données existantes
     
    Sheets("Arrow").Rows("2:36000").Delete Shift:=xlUp
     
    'Coller après avoir désactivé l'affichage
     
    Range("A5").Resize(rg.Count, rg.Columns).Value = rg.Value
     
    Exit Sub
    Et il bloque sur Range("A5").Resize(rg.Count, rg.Columns).Value = rg.Value en me mettant 'Objet requis'.

    Petite précision : l'utilisateur du fichier doit pouvoir copier des données venant d'un autre classeur et récupérer la mise en forme (on vient de me le demander).

    Des idées ?

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Petite précision : l'utilisateur du fichier doit pouvoir copier des données venant d'un autre classeur et récupérer la mise en forme (on vient de me le demander).
    dans ce cas, ma proposition ne conviendra pas. Il faudra passer par le copier/coller.
    Peut être pourrais tu ajouter un onglet, coller les données, supprimer l'ancien onglet et renommer le nouveau !
    Jérôme

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 47
    Points : 34
    Points
    34
    Par défaut
    Très bonne idée, qui marche parfaitement. Pour ceux que ça intéresse, voici le code.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Sub Delete_Paste_Arrow()
     
    'Cette macro permet de coller les données d'Arrow après les avoir copiées manuellement.
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    'En cas d'erreur, aller à ErrorHandler
     
    On Error GoTo ErrorHandler
     
    'Créer la feuille temporaire
     
    Sheets.Add.Name = "TempArrow"
     
    'Coller les données sur la feuille temporaire
     
    Sheets("TempArrow").Select
     
    [a5].PasteSpecial Paste:=xlPasteValues
    [a5].PasteSpecial Paste:=xlPasteFormats
     
    'Effacer les données existantes de la feuille Arrow
     
    Sheets("Arrow").Rows("2:36000").Delete Shift:=xlUp
     
    'Copier les données de TempArrow
     
    With Sheets("TempArrow")
            .Range(.Cells(5, 1), .Cells(10000, 50)).Copy Sheets("Arrow").Cells(5, 1)
    End With
     
    'Effacer la feuille TempArrow
     
    Sheets("TempArrow").Delete
     
    'Régler les couleurs
     
    Palette
     
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
     
    Exit Sub
     
    'En cas d'erreur, afficher l'instruction
     
    ErrorHandler:
    MsgBox "Please select a range of cell on an Arrow Excel file. You cannot select entire lines or columns." & Chr(13) & Chr(13) & "                                 Please delete pre existing Arrow data if necessary.", vbOKOnly
     
    'Supprimer TempArrow
     
    Dim Ws As Worksheet
     
    On Error Resume Next
    Set Ws = ThisWorkbook.Worksheets("TempArrow")
    On Error GoTo 0
     
    If Ws Is Nothing Then
     
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Exit Sub
     
    Else
    Sheets("TempArrow").Delete
     
    End If
     
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Contenu max de caractères dans une cellule
    Par elwy07 dans le forum Excel
    Réponses: 16
    Dernier message: 13/02/2015, 15h45
  2. Réponses: 0
    Dernier message: 24/10/2012, 15h33
  3. [FPDF] Afficher les contenu de deux variables dans une cellule du tableau
    Par beaf05 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 11/04/2012, 15h14
  4. [XL-2003] Insérer contenu de plusieurs Combobox dans une cellule
    Par ptitgoud dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2011, 16h21
  5. Réponses: 11
    Dernier message: 27/03/2005, 15h13

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