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/

Répondre à