Je vais essayer d'être plus explicite.
Si on relance la macro deux fois de suite sans rien changer dans la plage
origine, effectivement les formats (bordure et/ou couleur de fond et/ou
police..) sont conservés car il y sont depuis la première fois.
Par contre si entre la première et la deuxième fois on modifie les formats de
cellule dans la plage origine les nouveaux formats ne sont pas copiés.
Je m'en suis aperçu car j'avais mal programmé l'effacement de la feuille
d'arrivée. J'ai donc résolu le problème en effaçant correctement la feuille
arrivée en début de macro (ce qui étaitindispensable de toute façon)
Il n'en reste pas moins que si la plage d'arrivée est remplie, la seconde fois
les formats ne sont pas copiés
Voici le code la fonction de transfert entre les feuilles sachant que les
variables monDocument, LigneDansFeuilleStat sont publiques et initialisées dans
la procédure principale
Function transfert_resultat
dim PlagesNommees as object
dim PlageOrigine as object
dim PlageDestination as object
dim CelluleDestination as object
dim Curseur as object
dim Arrivee as object
PlagesNommees = monDocument.namedRanges
PlageOrigine = PlagesNommees.getByName("resultat").referredCells
' transfert de la plage résultat dans feuille stat à la ligne voulue
PlageDestination = Feuilles.getByName("stat")
CelluleDestination = PlageDestination.getCellByposition(0,LigneDansFeuilleStat)
PlageOrigine.spreadsheet.copyRange(CelluleDestination.CellAddress,
PlageOrigine.RangeAddress)
' copier coller valeur uniquement dans feuille stat
' on dimensionne la plage arrivée pour que les dataarray soient identiques
Arrivee = Feuilles.getByName("stat").getCellRangeByPosition(_
0,_
LigneDansFeuilleStat,_
PlageOrigine.getRangeAddress().EndColumn,_
LigneDansFeuilleStat + PlageOrigine.getRangeAddress().EndRow -
PlageOrigine.getRangeAddress().StartRow _
)
Arrivee.dataArray = PlageOrigine.dataArray
' mise à jour LigneDansFeuilleStat
LigneDansFeuilleStat = LigneDansFeuilleStat +
PlageOrigine.getRangeAddress().EndRow +1
end function
> Date: Mon, 19 Oct 2009 14:23:39 +0000
> From: [email protected]
> To: [email protected]
> Subject: Re: [prog] Copier valeurs et format d'une zone nommée
>
> Bonjour,
>
> > Je me suis servi de cette astuce pour copier-coller les valeurs d'une zone
> > d'une
> > feuille dans une autre feuille. Cela fonctionne bien si la feuille
> > d'arrivée est
> > vide, mais si on relance sans vider la feuille d'arrivée les formats sont
> > perdus.
>
> Je n'arrive pas à reproduire votre problème. Lorsque je reprends l'exemple
> fourni, la mise en forme est conservée même si je relance une nouvelle fois
> la macro.
> Qu'entendez-vous par "les formats sont perdus"? Que la mise en forme
> disparait sur la feuille de destination?
>
> > Qu'ai-je bien pu oublier ?
>
> Impossible à savoir, il faudrait que vous nous montriez le code de votre
> macro.
>
>
> Cordialement,
>
> T. Vataire
>
>
> > Date: Fri, 9 Oct 2009 09:38:47 +0000
> > From: [email protected]
> > To: [email protected]
> > Subject: Re: [prog] Copier valeurs et format d'une zone nommée
> >
> > Bonjour,
> >
> > A ma connaissance, dataArray ne copie pas la mise en forme car il ne s'agit
> > que de tableau de tableau de string/double.
> >
> > Par contre il est possible d'utiliser successivement la méthode copyRange()
> > d'un feuille (cela va tous copier y compris les formats est formules) puis
> > d'écraser les données copiée avec celles d'un dataArray (les formules sont
> > remplacé par leur résultat).
> >
> > sub test
> >
> > dim namedRanges as object
> > dim sourceRange as object
> > dim destRange as object
> >
> > namedRanges = thisComponent.namedRanges
> > sourceRange = namedRanges.getByName("source").referredCells
> > destRange = namedRanges.getByName("dest").referredCells
> > sourceRange.spreadsheet.copyRange(destRange.getCellByPosition(0,
> > 0).cellAddress, sourceRange.rangeAddress)
> > destRange.dataArray = sourceRange.dataArray
> >
> > end sub
> >
> > Cordialement,
> > T. Vataire
> >
> > ----- Mail Original -----
> > De: "Michel Grentzinger" <[email protected]>
> > À: [email protected]
> > Envoyé: Vendredi 9 Octobre 2009 11:11:55
> > Objet: Re: [prog] Copier valeurs et format d'une zone nommée
> >
> > Le vendredi 9 octobre 2009, Michel Grentzinger a écrit :
> > > Bonjour,
> > >
> > > J'ai une zone nommée ("Liste des personnes") dont je veux copier le
> > > contenu
> > > (valeurs, format, texte : tout sauf les formules) vers une feuille vide.
> > >
> > > Comment faire pour copier sans les formules ?
> >
> > Avec DataArray !
> > J'ai posté trop vite... Je pensais que dataArray allait me copier
> > uniquement
> > les valeurs... Les formats sont aussi corrects !
> > --
> > Michel Grentzinger
> > OpenPGP key ID : B2BAFAFA
> > Available on http://www.keyserver.net
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
>
> _________________________________________________________________
> A la recherche de bons plans pour une rentrée pas chère ? Bing ! Trouvez !
> http://www.bing.com/search?q=bons+plans+rentr%C3%A9e&form=MVDE6
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
_________________________________________________________________
Nouveau! Découvrez le Windows phone Samsung Omnia II disponible chez SFR.
http://clk.atdmt.com/FRM/go/175819072/direct/01/