Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 09/10/2008, 17h02   #1 (permalink)
Invité régulier
 
Date d'inscription: décembre 2004
Messages: 11
Par défaut Copie tableau vers Excel

Bjr

j'ai un petit souci

j'ai un tableau a une dimension que je cherche a copier vers excel

Tab(0)= jaune
Tab(1)= vert
Tab(2)= rouge
....
et voila ce que je voudrais obtenir
A1 jaune
B1 vert
C1 rouge

j'ai fait un truc qui fonctionne mais qui est long ( Une boucle et j'utilise offset pour remplir chaque cellule )

existe-t-il une facon plus rapide ?

Par avance, merci
yalefe est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 17h04   #2 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 10 017
Envoyer un message via MSN à Philippe JOCHMANS
Par défaut

Bonjour et bienvenue sur le forum Office de DVP.

Peux-tu nous mettre le code du truc qui fonctionne et qui est long, il y a peut-être moyen de l'optimiser.

Philippe
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/10/2008, 13h03   #3 (permalink)
Invité régulier
 
Date d'inscription: décembre 2004
Messages: 11
Par défaut

C'est pas que ce soit long ( j'ai ptet un peu exagéré)
mais je cherche à optimiser cette partie de traitement

Code :
For j = LBound(tabres) To UBound(tabres) Step 1
    ActiveCell.Value = tabres(j)
    ActiveCell.Offset(0, 1).Activate
Next j

Dernière modification par AlainTech ; 10/10/2008 à 13h07 Motif: Balises [code]
yalefe est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/10/2008, 13h46   #4 (permalink)
Membre habitué
 
Avatar de Ormonth
 
Date d'inscription: février 2008
Localisation: Loire Atlantique
Messages: 164
Par défaut

Bonjour,

Dans ce cas précis, en 1 ligne :

Code :
Range("A1:C1") = tabres
pour 3 données, si ton tableau en a plus, il n'y aura que 3 cellules remplies, tu peux dimentionner ta plage dynamiquement en fonction de Ubound, si ta plage est plus grande, tu auras des #N/A.

cordialement,

Didier
__________________
Didier Gonard

N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/10/2008, 15h04   #5 (permalink)
Invité régulier
 
Date d'inscription: décembre 2004
Messages: 11
Par défaut

merci de votre aide
mais dans votre exemple c'est assez statique

dans mon probleme ; le tableau est dynamique
et surtout la celllule de depart (" A1" dans votre exemple ) est également dynamique.

Sans trop rentrer dans les détails , ma macro cherche un n° de telephone dans une feuille et lorsque le n° est trouvé, elle colle les elements du tableau ( nom, rue, cp, ville, etc) dans les cellules adjacentes
yalefe est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/10/2008, 16h47   #6 (permalink)
Membre habitué
 
Avatar de Ormonth
 
Date d'inscription: février 2008
Localisation: Loire Atlantique
Messages: 164
Par défaut

Ben oui, pourquoi les réponses sont à côté de la plaque

Ben parcequ'elles répondent à la question posée et non pas à ce que le demandeur a dans l'idée...

J'ai précisé que l'on pouvait mettre des bornes dynamiques, ça dépend du reste du code. Exemple, en faisant intervenir un tirage au sort

Code :
Sub DemoRempliCellRapide2()
Dim tablo As Variant
Dim I As Integer
Dim MaxI As Byte
Dim cible As Range
 
'Selectionnez une cellule vierge qui a 29 cell vierges à droite par exemple
 
MaxI = Int((30 * Rnd) + 1)
ReDim tablo(MaxI)
MsgBox MaxI
        For I = 0 To MaxI - 1 'demande un tableau à 1 dimention
            tablo(I) = Cells(I + 7, 3)
        Next I
Range(ActiveCell, ActiveCell.Offset(0, MaxI)) = tablo
End Sub
la partie construction du tableau m'es propre, c'est pour l'exemple, il y a simplement 30 données.

l'emplacement du "collage" dépendra de la cellule active (sélectionnée) et le Ubound variera de 1 à 30

PS : si tu as besoin d'explications sur ce code ou sur la façon d'adapter le tien, tu demandes...
PS2: Je n'utilise pas le même principe pour remplir mon tableau, ça marche aussi, mais me génère un tableau à 2 dimentions..

bon courage,

Didier
__________________
Didier Gonard

N'oubliez pas de mettre : ..quand c'est le cas !

Dernière modification par Ormonth ; 10/10/2008 à 17h02 Motif: rajout PS
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/10/2008, 16h32   #7 (permalink)
Invité régulier
 
Date d'inscription: décembre 2004
Messages: 11
Par défaut

un grand merci
ca marche
yalefe est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBAACCESS

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide