Copie de valeurs

habiler

XLDnaute Nouveau
Bonsoir la communauté,

Je voudrais par une macro ou une application Vba, bref de manière non répétitive remplacer les valeurs des colonnes B,C,D par les valeurs I,J,K et remettre les colonnes E,F,G à 0.

En fait les cellules ne contenant pas de formule sont remplacés par des valeurs et non par des formules.

Qui pourrait m'aider.

Merci d'avance et joyeuses Pâques

Habiler
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Habiler, le Forum de nuit


Voici un mini algo, qui selon l'interprétation de tes explications, devrait déjà traîter plus ou moins ton problème.

Sub TheReInitiator()
Dim Cell As Range

With Sheets('Feuil1')
   
For Each Cell In Range(.Range('B2'), .Range('B1000').End(xlUp))
        Cell = Cell.Offset(0, 7)
        Cell.Offset(0, 1) = Cell.Offset(0, 8)
        Cell.Offset(0, 2) = Cell.Offset(0, 9)
        Cell.Offset(0, 3) = 0
        Cell.Offset(0, 4) = 0
        Cell.Offset(0, 5) = 0
   
Next
End With

End Sub


Bonne Nuit
[ol]@+Thierry[/ol]
 
A

AV

Guest
Salut,

''...Je voudrais par une macro ou une application Vba, bref de manière non répétitive ..''

L'intérêt de l'emploi du vba serait plutôt contraire à savoir, effectuer une manip répétitive !

''...remplacer les valeurs des colonnes B,C,D par les valeurs I,J,K et remettre les colonnes E,F,G à 0...''

Sub zzz()
[B:D] = [I:K].Value
[E:G] = 0
End Sub

AV [aaa]
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Crochet or Not Crochet Thati s the Question !

Bonjour Habiler, Pascal, Alain, le Forum

Je suis personnellement avec une dent contre les crochets c'est assez peu optimisé d'utiliser 'Evaluate' de la sorte.

Avec mon copain Yeahou on l'avait bien bataillé et démontré dans le Forum première génération (Chercher dans les Archives à 'Crochet or Not Crochet Thatis the Question'

Voici une autre démonstration, mais je n'avais pas proposé ce genre de solution 'radicale' car on se retrouve avec les trois colonnes 'E:G' remplies de zéro jusqu'à la ligne 65536...

Sub Crochet()
Dim TheTimer As Double
TheTimer = Timer

[B:D] = [I:K].Value
[E:G] = 0

Debug.Print Timer - TheTimer
'= 1,9539999999979
End Sub



Sub NotCrochet()
Dim TheTimer As Double
TheTimer = Timer

   
With Sheets('Feuil1')
        .Columns('B:D') = .Columns('I:K')
        .Columns('E:G') = 0
   
End With

Debug.Print Timer - TheTimer
'= 0,344624999997905
End Sub


Bonne Fêtes de Pâques
[ol]@+Thierry[/ol]

EDITION !

Autant pour moi, dans ce cas de figure, en fait j'ai zappé le 'Value' indispensable également dans 'NotCrochet' sinon cela ne fait que Vider la plage.

On ne gagne en fait que quelques centièmes, mais dans d'autres cas de figure c'est bien plus conséquent..

La démostration plus flagrante dans ce Fil que j'ai retrouvé Lien supprimé

Bonne Journée
[ol]@+Thierry[/ol]

Message édité par: _Thierry, à: 15/04/2006 11:05
 
H

habiler

Guest
Bonjour à tous,

Je me rends compte que mon fichier n'était pas joint. J'espère que mon problème sera plus clair à présent. en fait tous les X temps la valeur des cases jaunes deviennent celles des cases bleues. Je voudrais en arriver en fait qu'en appuyant sur un bouton de commande la mise à jour se fasse automatiquement

Merci à tous
 
A

AV

Guest
Re:Crochet or Not Crochet Thati s the Question !

''...Autant pour moi, dans ce cas de figure, en fait j'ai zappé le 'Value' indispensable..''

Il me semblait bien aussi que la démo n'était pas vraiment tip top ! ;-)

''..On ne gagne en fait que quelques centièmes..''

Sur ma bécane la différence se fait au niveau des 10000 ! et encore c'est pas toujours le même qui gagne...

''..mais dans d'autres cas de figure c'est bien plus conséquent...''

Ben dis nous ...

AV [aaa] si je puis utiliser encore les crochets ! ;-))
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:Crochet or Not Crochet Thati s the Question !

Bonsoir Alain,

J'ai pris pour habitude de suivre les conseils de deux 'assez grands spécialistes' : Laurent Longre, [qu'entre crochets j'ai eu la chance de connaître personnellement], qui, lui suggère d'utiliser les [] pour evaluer une expression :

La fonction Evaluate et son équivalent [] permettent, dans une certaine mesure, de combler une lacune importante de VBA, l'impossibilité apparente d'utiliser des formules matricielles à l'intérieur d'une macro...

Ce lien n'existe plus

Mais il ne préconise pas d'utiliser cette fonction pour se référer simplement à une Range.

Par ailleurs je suis à la lettre un américain, Cheap Pearson, voici d'ailleurs ce qu'il écrit explicitement :

Related to this is the shortcut method of refering to cells. VBA will allow you reference cells with [A1] rather than Range('A1'). While the [A1] syntax is easier to type, it is slower to execute than the Range('A1') syntax
.

Chip Person 'Optimizing VBA' (Voir 'Accessing Cells In A Range' en haut de page)

Et sinon dans le lien mis en ligne, tu as des tests élaborés par mon copain Yeahou, qui lui aussi pensait ne pas voir de différence flagrante et...

...qui a définitivement abandonné les Crochets pour accéder uniquement à une Range, comme Michel_M d'ailleurs et quelques autres contributeurs d'XLD.

Mais comme j'écrivais dans ce Fil de l'époque, VBA a cette puissance qui permet à tout un chacun de développer selon ses moyens et compétences et ses mauvaises habitudes aussi... Et c'est ceci qui est super !!! et qui est évolutif...pour tout le monde

Joyeuses Pâques
[ol]@+Thierry[/ol]
 
A

AV

Guest
Re:Crochet or Not Crochet Thati s the Question !

Re Thierry,

Ah..cet Evaluate...
Je sais qu'il chagrine beaucoup les partisans d'une syntaxe académique mais quant à ses diminutions de performances on n'épiloguera pas.

Pour ce qui est de la fonction Evaluate je te renvoie au fichier ici (Ce lien n'existe plus) dont la 1° édition a bientôt 5 ans...

A+
AV [aaa]
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:Crochet or Not Crochet Thati s the Question !

Bonsoir Alain, le Fil, le Forum

(Désolé habiler on fait un sacré .... Crochet dans ton Fil :))

Bien que je puisse avoir une dent comtre les Crochets, ce ne serait pas objectif de ne pas saluer ton travail AV, très beau fichier, presque un Méga de Démo, y a du boulot, tu as dû en passer des heures.

Crochets ou pas, c'est une belle performance.

Bonne Soirée et bon Dimanche de Pâques
[ol]@+Thierry[/ol]
 
A

AV

Guest
Re:Crochet or Not Crochet Thati s the Question !

Re,

''....Bien que je puisse avoir une dent comtre les Crochets...''
Dans le fichier cité 'le problème des crochets' n'est pas du tout de la même nature que celui du type [A1]=0
Il s'agit du raccourci syntaxique de la fonction Evaluate et il n'y a donc pas un iota de différence d'exécution...
L'immense majorité des exemples sont la traduction vba d'un résultat de formules matricielles obtenues par Evaluate (outil indispensable pour ce type de manip)

''..tu as dû en passer des heures...''

Effectivement...Je pense qu'on peut en penser au moins autant à analyser les différentes soluces...! ;-)

AV [aaa]
 

Discussions similaires

Réponses
7
Affichages
243

Statistiques des forums

Discussions
312 347
Messages
2 087 504
Membres
103 565
dernier inscrit
Fabien78