bonjour, je n'ai pa de code à présenter, jvoulai juste savoir si on pouvai faire passé un tableau excel en un objet, afin de pouvoir le transporté vers une autre feuille ou un autre classeur ? merci
bonjour, je n'ai pa de code à présenter, jvoulai juste savoir si on pouvai faire passé un tableau excel en un objet, afin de pouvoir le transporté vers une autre feuille ou un autre classeur ? merci
Une feuille Excel est déjà un objet en soit. Il s'agit d'un Object de type WorkSheet.
Le code qui suit permet de copier la feuille RESULTAT - RECHERCHE du classeur courant dans le classeur nommé classeur1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Public Sub CopierFeuiller() Dim FeuilleSource As Worksheet Set FeuilleSource = ThisWorkbook.Worksheets("RESULTAT - RECHERCHE") FeuilleSource.Copy after:=Workbooks("Classeur1").Worksheets(Workbooks("Classeur1").Worksheets.Count) End Sub
jevais mexpliqué plus clairement. en fait j'ai 2 feuilles, sur 2 classeurs différents, qui comportent chacunes un tableau. je voudrais copier l'un des tableau sur l'autre feuille pour les mettre sur la même feuille. le problème c'est qu'il ne sont pa dimensionnés de la même façon, les colonnes ne correspondent pas du tout, et j'aurais voulu garder cette différence.
est-ce possible ? dites le si c'est pas clair !
merci
Dans cas il suffit de copier les cellules d'une feuille sur une autre feuille. Utilise alors la fonction Copy de l'objet Range.
tu veux dire qu'il faudrait que je copie chaque cellule une par une d'une feuille à l'autre ? mais si je fais sa, j'aurais juste la valeur contenue dans la cellule mais pa la taille de la cellule. or, je voudrai gardé la dimension de la cellule.
Je n'ai pas dit : "chaque cellule une par une" mais "les cellules"
Je n'ai pas parlé de "la valeur contenue dans la cellule" mais de l'objet Range.
Range désigne un bloc de cellules avec toutes les propriétés qui s'y rattache, donc le contenu, le format, la taille, la mise en forme, les formules, etc...
ouai en gros elle prend en compte le format de la cellule + la valeur. mais pa sa taille. si jcopie mon tableau avec la méthode range dans une autre feuille, le format de la cellule copié se copiera bien sur la nouvelle feuille, mais si la cellule mesurait 3cm sur l'ancienne feuille, et qu'elle ne mesure que 2cm sur la nouvelle feuille, la taille de la nouvelle cellule ne sera pa 3cm mais 2cm.
Je ne connais pas VBA.
Je sais seulement que Ousk a eu à traiter un problème similaire.
Je me rappelle également avoir eu avec lui une conversation, pour traiter (hors VBA donc) du passage de tableaux dynamiques (truc tremplin qu'il a utilisé pour faire face au problème VBA).
Il était parti de cet esprit là, résultat de notre conversation :
Attendez ousk !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub Command1_Click() Dim toto(3) As String, titi For i = 0 To 2 '====juste pour remplir pour essayer toto(i) = Str(i) Next Let titi = toto ' == je fais une équivalence toto(0) = "a" '=== pour vérifier que pas toujours égal For i = 0 To 2 MsgBox titi(i) & " " & toto(i) ' === et vérifie que titi est # de toto si j'ai modifié toto Next End Sub
Pour adapter à VBA, il a la solution !![]()
en gros est-ce que la cellule "A1" d'une feuille quelconque peut mesuré 2cm, et que "A2", cellule présente sur la même feuille mesure 3cm ?
Dans ce cas, tu peux ajuster la taille des cellules après la copie. Pour cela parcour la collection Columns :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Public Sub Main() CopierCellules _ ThisWorkbook.Worksheets("Source").Range("B2:J10"), _ Workbooks("Classeur2").Worksheets("Destination").Range("D4") End Sub Public Sub CopierCellules(CellulesSources As Range, Cible As Range) Dim IndexColumn As Long Dim R As Range 'Copie des cellules CellulesSources.Copy Cible.PasteSpecial Paste:=xlPasteAll 'Ajustement de la taille des cellules IndexColumn = Cible.Column For Each R In CellulesSources.Columns Cible.Parent.Columns(IndexColumn).ColumnWidth = R.ColumnWidth IndexColumn = IndexColumn + 1 Next End Sub
Edit : Il y a une solution sans doute plus élégante en utilisant le paramètre xlColumnWidths de la méthode PasteSpecial : Selection.PasteSpecial Paste:=xlColumnWidths
Mais n'arrive à mettre en oeuvre cette solution. Si quelqu'un à une solution...
Désolé jemefe, je n'étais pas disponible et n'ai donc pas vu ce post.
J'ai bien tout lu et je ne comprends pas
Où veux-tu coller ton second tableau ? Sur les colonnes vide faisant suite à ton premier tableau ou sur les lignes vides suivant le premier tableau ?j'ai 2 feuilles, sur 2 classeurs différents, qui comportent chacunes un tableau. je voudrais copier l'un des tableau sur l'autre feuille pour les mettre sur la même feuille. le problème c'est qu'il ne sont pa dimensionnés de la même façon, les colonnes ne correspondent pas du tout, et j'aurais voulu garder cette différence.
Si tu le colles en dessous, et que tu redimensionnes les colonnes après copie, les colonnes seront modifiées dans ton premier tableau.
Si tu le colles sur les colonne suivantes, la solution de Catbull est la bonne, enfin, je n'ai pas mieux...
Bref, qu'appelles-tu tableau ? Une plage de données ? Un graphe ?
Ou veux-tu placer une feuille de calcul sur une autre feuille de calcul ? Auquel cas, c'est ce qu'a évoqué jmfmarques et on verra.
Tu précises ?
A+
Je n'avais pas vu
Et la réponse est NON ! (voir explication sur post précédent)en gros est-ce que la cellule "A1" d'une feuille quelconque peut mesuré 2cm, et que "A2", cellule présente sur la même feuille mesure 3cm ?
A+
Pour une simple image d'une plage de données copiée sur une autre feuille, l'aide te donne le code.
Tu dois activer une référence mais là, je compte sur bbil ou AlainTech pour te l'indiquer. (Dans l'éditeur VBA -> OUtils -> Références)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub CopieEcranPartielXls() Worksheets("Calendrier").Range("A1:W36").CopyPicture xlScreen, xlBitmap Worksheets("Feuil2").Paste destination:=Worksheets("Feuil2").Range("A37") End Sub
Tu dis
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager