Copier/coller des valeurs entre classeurq

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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 !
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
12
Affichages
1 K
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
727
Réponses
6
Affichages
949
Réponses
5
Affichages
868
Retour