copier collage special

Le
Dominique
bonsoir le forum
j ai fait une macro qui marche bien dans un but d 'exporter des données
dans une autre feuille. mon problème actuel est de les exporter en
valeur et format uniquement j'ai fait ca mais ca ne marche pas . Pouvez
vous m'aider? merci
Sub ExportFaisanVersSauvegardeUG()

vReponse = MsgBox("Voulez vous sauvegardez l'UG?", vbYesNo + vbQuestion)

If vReponse = vbYes Then

Dim DerLigFaisan As Long, DerLigSauvegarde As Long
DerLigFaisan = Sheets("Faisan").Range("C65536").End(xlUp).Row
DerLigSauvegarde = Sheets("SauvegardeUG").Range("C65536").End(xlUp).Row + 1

Sheets("Faisan").Range("A15:AF" & DerLigFaisan).Select
Selection.Copy
Sheets("SauvegardeUG").Range("A" & DerLigSauvegarde).Select
Selection.PasteSpecial xlPasteValuesAndNumberFormats, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse

End If
End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #19935211
Bonjour Dominique,

Essaie ceci :

'-----------------------------------------
Sub ExportFaisanVersSauvegardeUG()

'Déclarations de toutes les variables dans le
'haut de ta procédure.
Dim Rg As Range, DerLig As Long, LastRow As Long

If MsgBox("Voulez vous sauvegardez l'UG?", _
vbYesNo + vbQuestion) = vbYes Then

With Sheets("Faisan")
With .Range("A:AF")
DerLig = .Find(What:="*", LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End With
Set Rg = .Range("A15:AF" & DerLig)
End With
With Sheets("SauvegardeUG")
LastRow = .Range("A:AF").Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1
Rg.Copy .Range("A" & LastRow)
With .Range("A" & LastRow & ":AF" & DerLig - 15 + 2)
.Value = .Value
.EntireColumn.AutoFit
.EntireRow.AutoFit
End With
End With
Else
MsgBox "Aucune copie a été effectuée."
End If
End Sub
'-----------------------------------------

"Dominique"
bonsoir le forum
j ai fait une macro qui marche bien dans un but d 'exporter des données
dans une autre feuille. mon problème actuel est de les exporter en
valeur et format uniquement j'ai fait ca mais ca ne marche pas . Pouvez
vous m'aider? merci
Sub ExportFaisanVersSauvegardeUG()

vReponse = MsgBox("Voulez vous sauvegardez l'UG?", vbYesNo + vbQuestion)

If vReponse = vbYes Then

Dim DerLigFaisan As Long, DerLigSauvegarde As Long
DerLigFaisan = Sheets("Faisan").Range("C65536").End(xlUp).Row
DerLigSauvegarde = Sheets("SauvegardeUG").Range("C65536").End(xlUp).Row + 1

Sheets("Faisan").Range("A15:AF" & DerLigFaisan).Select
Selection.Copy
Sheets("SauvegardeUG").Range("A" & DerLigSauvegarde).Select
Selection.PasteSpecial xlPasteValuesAndNumberFormats, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse

End If
End Sub
Dominique
Le #19935471
Le 16/08/2009 05:53, MichDenis a écrit :
Bonjour MichDenis
Merci beaucoup MichDenis,
Ca marche, sans vouloir abuser de ton temps peux tu m'expliquer la
fonction find que je comprenne bien ton travail, et que je puisse
l'appliquer à d'autre fichier.
Pareil je ne comprend pas trop le -15 et le +2 de cette ligne (le -15
surement référence à A15 mais +2?
With .Range("A" & LastRow & ":AF" & DerLig - 15 + 2)



merci d'avance
MichDenis
Le #19937361
Bonjour Dominique,

La méthode "Find" a toutes sortes de petites subtilités
à saisir avant d'en comprendre toute la portée. Lis d'abord
l'aide sur Excel sur cette méthode en INCLUANT les remarques
dans la page de l'aide....

En gros dans ta procédure, elle recherche n'importe quel texte
qui pourrait y avoir dans une ligne sur les colonnes "A:AF"

Par défaut, lorsque le paramètre "After" n'est pas défini, la
méthode "Find" débute par défaut sa recherche en A1. Elle
scanne ligne par ligne (voir paramètre : SearchOrder:=xlByRows)
juste qu'à la dernière ligne. Elle s'arrête sur cette dernière ligne
car le paramètre (SearchDirection:=xlPrevious) lui dit de
s'arrêter juste avant de revenir à la cellule de départ A1.
En fait le dernier ".row" de la ligne de commande demande
à la méthode "Find" de retourner le numéro de la ligne où
elle a trouvé la dernière cellule contenant du texte peu importe
ce dernier.

With .Range("A" & LastRow & ":AF" & DerLig - 15 + 2)
.Value = .Value
.EntireColumn.AutoFit
.EntireRow.AutoFit
End With
L'objectif de cette section est de s'assurer que la plage de cellules
qui vient de s'ajouter données déjà présentes sur la feuille
SauvegardeUG, remplace les formules par leurs valeurs et
automatiser la largeur et hauteur des colonnes.

Pour déterminer cette plage :
| With .Range("A" & LastRow & ":AF" & DerLig - 15 + 2)

LastRow -> dernière ligne sur la feuille Sheets("SauvegardeUG") +1
où seront copiées les données

DerLig -> dernière ligne sur la feuille Sheets("Faisan") où est
défini la plage à copier (variable objet Rg)

Le chiffre 15 est donné par la présentation de ton problème.
La plage à copier sur la feuille Sheets("Faisan") doit débuter
à partir de la ligne 15. Pour savoir le nombre de ligne que la
procédure copie, il faut enlever à la valeur de la variable "DerLig"
15 qui représente les 15 premières lignes de la feuille qui n'ont
pas été copiées.
Le chiffre + 2 -> c'est une petite coquille, car j'aurais dû et il faut
le replacer par la variable LastRow. Les lignes avant le LastRow
ne font pas parti des lignes qui viennent d'être copiées.
La nouvelle ligne de code devrait se lire ainsi :
With .Range("A" & LastRow & ":AF" & DerLig - 15 + LastRow)




"Dominique"
Le 16/08/2009 05:53, MichDenis a écrit :
Bonjour MichDenis
Merci beaucoup MichDenis,
Ca marche, sans vouloir abuser de ton temps peux tu m'expliquer la
fonction find que je comprenne bien ton travail, et que je puisse
l'appliquer à d'autre fichier.
Pareil je ne comprend pas trop le -15 et le +2 de cette ligne (le -15
surement référence à A15 mais +2?
With .Range("A" & LastRow & ":AF" & DerLig - 15 + 2)



merci d'avance
Publicité
Poster une réponse
Anonyme