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()
Dim DerLigFaisan As Long, DerLigSauvegarde As Long
DerLigFaisan = Sheets("Faisan").Range("C65536").End(xlUp).Row
DerLigSauvegarde = Sheets("SauvegardeUG").Range("C65536").End(xlUp).Row + 1
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichDenis
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" a écrit dans le message de groupe de discussion :
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()
Dim DerLigFaisan As Long, DerLigSauvegarde As Long DerLigFaisan = Sheets("Faisan").Range("C65536").End(xlUp).Row DerLigSauvegarde = Sheets("SauvegardeUG").Range("C65536").End(xlUp).Row + 1
'-----------------------------------------
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" <dobidon@orange.fr> a écrit dans le message de groupe de discussion :
udRF2VfHKHA.1340@TK2MSFTNGP05.phx.gbl...
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()
Dim DerLigFaisan As Long, DerLigSauvegarde As Long
DerLigFaisan = Sheets("Faisan").Range("C65536").End(xlUp).Row
DerLigSauvegarde = Sheets("SauvegardeUG").Range("C65536").End(xlUp).Row + 1
'----------------------------------------- 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" a écrit dans le message de groupe de discussion :
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()
Dim DerLigFaisan As Long, DerLigSauvegarde As Long DerLigFaisan = Sheets("Faisan").Range("C65536").End(xlUp).Row DerLigSauvegarde = Sheets("SauvegardeUG").Range("C65536").End(xlUp).Row + 1
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?
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?
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?
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" a écrit dans le message de groupe de discussion :
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?
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" <dobidon@orange.fr> a écrit dans le message de groupe de discussion :
eqy4RzjHKHA.4004@TK2MSFTNGP05.phx.gbl...
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?
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" a écrit dans le message de groupe de discussion :
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?