Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier/coller des valeurs entre classeurq

  • Initiateur de la discussion Pascal Legrand
  • Date de début
P

Pascal Legrand

Guest
Bonjour à tous,

j'ai un petit probleme VBA :
je desire copier des valeurs (et non les formaules!!!) d'un classeur à un autre sous EXCEL. J'utilise donc un code du style :

Workbooks(annee2).Worksheets("Balance").Range("D6:E94").Copy _
destination:=Workbooks(annee3).Worksheets("BAI").Paste(Range("D6:E94"))

Mon probleme est que cela recopie les formules, alors que je ne desire que recoipier des valeurs.

Merci par avance, pour toute aide.

Pascal
 
@

@+Thierry

Guest
Bonjour Pascal, le Forum

Tu peux utiliser une Array comme "passerelle", comme ceci tu n'auras que les valeurs.

Sub ReportViaArray()
Dim Tablo As Variant

Tablo = Workbooks("Annee2.xls").Worksheets("Balance").Range("D6:E94")

Workbooks("Annee3.xls").Worksheets("BAI").Range("D6:E94") = Tablo
End Sub

Bon Aprèm
@+Thierry
 
J

JCA06

Guest
Salut Thierry,

Je viens justement d'être initié aux tableau par Yeahou et je me doutais bien que c'était très utile !

En voici un simple et brillant exemple !

A la prochaine !
 
@

@+Thierry

Guest
Bonjour JC06, Pascal, le Forum

Et oui l'usage d'un Tableau est bien pratique dans pas mal de cas et c'est surtout bien plus rapide d'exécution qu'une boucle du Style "For Each Cell in Range" !

L'usage d'un Tableau en simple transfer comme dans ce cas précis est un premier pas très facile à franchir puisque il ne faut respecter que la taille de départ et celle d'arrivée.

Mais puisque vous avez l'air de vous interresser à ces tableaux, dans la foulée on peut faire des "choses" ...

Imaginons que Pascal ait besoin de tranférer les données de "D6:E94" en Multipliant la valeur de chaque Item en Colonne "D" par 2 et en Divisant la Valeur de chaque Item de la Colonne "E" par 2...

Voici comment le tablo (oups tableau !!! lol) va servir :

Sub ReportAndCalculationViaArray()
Dim Tablo As Variant
Dim i As Integer

Tablo = Workbooks("Annee2.xls").Worksheets("Balance").Range("D6:E94")

For i = 1 To UBound(Tablo)
Tablo(i, 1) = Tablo(i, 1) * 2
Tablo(i, 2) = Tablo(i, 2) / 2
Next i

Workbooks("Annee3.xls").Worksheets("BAI").Range("D6:E94") = Tablo

End Sub

Il est bien entendu que les cellule de la Plage source contiennent évidemment du numérique, sinon on va entendre VBE !!!

Mais qu'à celà ne tienne, puisque on a tout dans un tableau, on peut aussi scanner les valeurs dans la foulées comme ceci :

Sub ReportAndCalculationViaArray()
Dim Tablo As Variant
Dim i As Integer

Tablo = Workbooks("Annee2.xls").Worksheets("Balance").Range("D6:E94")

For i = 1 To UBound(Tablo)
If IsNumeric(Tablo(i, 1)) Then Tablo(i, 1) = Tablo(i, 1) * 2
If IsNumeric(Tablo(i, 2)) Then Tablo(i, 2) = Tablo(i, 2) / 2
Next i

Workbooks("Annee3.xls").Worksheets("BAI").Range("D6:E94") = Tablo

End Sub

Voilà comme ceci ce fil pourra servir pour les premiers pas de Tableaux !

Bonne Fin de Journée
@+Thierry
 
J

JCA06

Guest
Quand je pense aux profs que j'ai pu avoir en informatique pendant mes études, à quelques rares exceptions prés si rares que j'hésite à le mettre au pluriel, je me dis que ça serait génial si tu trouvais à donner des cours !

Lorsque la pédagogie rencontre la maîtrise technique, c'est un vrai feu d'artifice ! (tiens on y reviens dis-donc au 14 juillet !).

God save Thierry !
 
E

ed

Guest
Salut!

J'ai une solution beaucoup plus simple à ton problème et elle est super rapide!

Sélectionne les valeurs que tu souhaite copier et copie les.

Ensuite au lieu de coller "normalement" fait un clic droit et sélectionne "collage spécial". Sélectionne ensuite l'item Coller/valeurs et tu obtiens les valeurs sans formule!

A bientot
ed
 
P

Pascal Legrand

Guest
Bonjour a tous
et encore merci pour votre aide. J'ai en fait utilise un tableau (a le type Variant, je n'y avais pas pense!!). Merci pour ton conseil Ed, mais j'avais besoin de faire cela direcrtement sous VBA!!!!

Pascal
 

Discussions similaires

Réponses
7
Affichages
560
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…