Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2012, 09h39   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 46
Points : 12
Points : 12
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.
shimuno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 16h05   #2
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 831
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 831
Points : 2 859
Points : 2 859
Envoyer un message via MSN à patricktoulon
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:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 11h49   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 46
Points : 12
Points : 12
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 :
Sheets("Arrow").Rows("2:36000").Delete Shift:=xlUp
La seconde colle une plage de cellules qu'un utilisateur a copié manuellement.

Code :
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.
shimuno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 12h27   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 924
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 924
Points : 7 254
Points : 7 254
Bonjour,

Une solution sans utiliser le presse papier
Code :
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

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2012, 22h06   #5
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 46
Points : 12
Points : 12
Merci pour ta réponse.

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

Code :
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 ?
shimuno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2012, 22h12   #6
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 924
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 924
Points : 7 254
Points : 7 254
Citation:
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

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2012, 16h13   #7
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 46
Points : 12
Points : 12
Très bonne idée, qui marche parfaitement. Pour ceux que ça intéresse, voici le code.

Code :
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
shimuno est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h58.


 
 
 
 
Partenaires

Hébergement Web