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

Copier tableau vba dans plage excel

  • Initiateur de la discussion Initiateur de la discussion Balot57
  • 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 !

B

Balot57

Guest
Bonjour à tous,
Dans une macro un peu complexe, j'aimerais utiliser la copie directe d'un tableau dans une plage de cellules afin d'éviter le bouclage sur les cellules et les lignes/colonnes du tableau. Pour me faire la main, j'ai fait une macro basique mais qui ne donne pas les résultats voulus. Je remplis un tableau avec les chiffres de 1 à 10. En sortie, j'aimerais avoir en colonne 5 toutes les valeurs du tableau, mais ma macro ne renvoie que la 1ère valeur (3) à chaque ligne. Savez-vous me dire où est l'erreur ?

Code:
Sub titi()

    Dim TabTiti(1 To 10) As Variant
    Dim PlagePourColler As Range

    TabTiti(1) = 3
    TabTiti(2) = 5
    TabTiti(3) = 2
    TabTiti(4) = 9
    TabTiti(5) = 1
    TabTiti(6) = 4
    TabTiti(7) = 8
    TabTiti(8) = 6
    TabTiti(9) = 7
    TabTiti(10) = 10
    
    Set PlagePourColler = Range(Cells(1, 5), Cells(10, 5))
    PlagePourColler.Value = TabTiti

End Sub
 
Re : Copier tableau vba dans plage excel

Bonjour balot, bonjour le forum,

Essaie comme ça :
Code:
Sub titi()
    Dim TabTiti(1 To 10) As Variant
    Dim PlagePourColler As Range
    TabTiti(1) = 3
    TabTiti(2) = 5
    TabTiti(3) = 2
    TabTiti(4) = 9
    TabTiti(5) = 1
    TabTiti(6) = 4
    TabTiti(7) = 8
    TabTiti(8) = 6
    TabTiti(9) = 7
    TabTiti(10) = 10
 
Cells(1, 5).Resize(UBound(TabTiti)) = Application.Transpose(TabTiti)
End Sub
 
Re : Copier tableau vba dans plage excel

Merci pour vos réponses. Cette méthode fonctionne bien si le tableau a une seule dimension. J'ai fait des essais avec 2 dimensions dans le but d'avoir en colonne 5 la valeur quand la 2è dim vaut 1, et en colonne 6 la valeur quand la 2è dim vaut 2. Mais les lignes 3 à 10 se retrouvent avec une erreur et les lignes 1 et 2 comportent les valeurs des dim 1 et 2.

Code:
Sub TableauDansPlage_2colonnes_methode2()

    Dim TabTiti(1 To 10, 1 To 2) As Byte

    TabTiti(1, 1) = 3
    TabTiti(1, 2) = 10
    TabTiti(2, 1) = 5
    TabTiti(2, 2) = 9
    TabTiti(3, 1) = 2
    TabTiti(3, 2) = 8
    TabTiti(4, 1) = 9
    TabTiti(4, 2) = 7
    TabTiti(5, 1) = 1
    TabTiti(5, 2) = 6
    TabTiti(6, 1) = 4
    TabTiti(6, 2) = 5
    TabTiti(7, 1) = 8
    TabTiti(7, 2) = 4
    TabTiti(8, 1) = 6
    TabTiti(8, 2) = 3
    TabTiti(9, 1) = 7
    TabTiti(9, 2) = 2
    TabTiti(10, 1) = 10
    TabTiti(10, 2) = 1
    
    Range("E1").Resize(10, 2).Value = Application.Transpose(TabTiti)

End Sub
 
Re : Copier tableau vba dans plage excel

Bonjour,

Code:
Sub TableauDansPlage_2colonnes_methode2()

    Dim TabTiti(1 To 10, 1 To 2)

    TabTiti(1, 1) = 3
    TabTiti(1, 2) = 10
    TabTiti(2, 1) = 5
    TabTiti(2, 2) = 9
    TabTiti(3, 1) = 2
    TabTiti(3, 2) = 8
    TabTiti(4, 1) = 9
    TabTiti(4, 2) = 7
    TabTiti(5, 1) = 1
    TabTiti(5, 2) = 6
    TabTiti(6, 1) = 4
    TabTiti(6, 2) = 5
    TabTiti(7, 1) = 8
    TabTiti(7, 2) = 4
    TabTiti(8, 1) = 6
    TabTiti(8, 2) = 3
    TabTiti(9, 1) = 7
    TabTiti(9, 2) = 2
    TabTiti(10, 1) = 10
    TabTiti(10, 2) = 1
   
    Range("E1").Resize(UBound(TabTiti, 1), UBound(TabTiti, 2)) = TabTiti

End Sub

Transfert tableau dans un champ

JB
 

Pièces jointes

Dernière édition:
Re : Copier tableau vba dans plage excel

Avec cette méthode, j'obtiens "erreur définie par l'application ou par l'objet".

[edit]
Pardon, je corrige ma réponse, ça marche, il suffisait de faire un peu plus attention, l'heure de la sieste sans doute.....
Merci pour le lien, il contient plein d'informations intéressantes.
 
Dernière modification par un modérateur:
Re : Copier tableau vba dans plage excel

Au cas où ça intéresse quelqu'un, j'ai fait une macro permettant de comparer les temps de traitement pour différentes actions :
- remplir un tableau à partir d'une plage de cellules (65535 lignes et 5 colonnes) : 0.12s
- remplir un tableau à partir d'une boucle sur des cellules : 3.29s
- remplir une plage de cellules avec un tableau : 1.25s
- remplir des cellules avec une boucle sur un tableau : 18.79s
- remplir des cellules avec une boucle sur un tableau en désactivant la mise à jour de l'écran : 14.83s

Bien sûr, si ces actions doivent être réalisées une seule fois, peu importe. Mais si elles doivent être répétées, cela peut devenir important.
 

Pièces jointes

- 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
4
Affichages
292
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…