Simplifier Macro

  • Initiateur de la discussion Phil
  • Date de début
P

Phil

Guest
Bonjour,
Est-ce qu'il est possible de simplifier ma macro si c'est possible
du genre un compteur pour alimenter mon tblvar et pour ensuite
le decharger dans ma nouvelle feuille...!!
Merci pour votre aide
Phil
----------------------------------------------------------------------------
Public tblvar(5, 1) As String
Public nlFin As Integer
Dim valeur As Integer
Dim Cpt As Long
Sub NewGestion()
Windows('Wordversexcel.XLS').Activate
Sheets('Données').Select
Range('A1').Select
Sheets('Données').Unprotect
tblvar(1, 1) = Range('A1').Value
tblvar(2, 1) = ActiveCell.Offset(0, 1)
tblvar(3, 1) = ActiveCell.Offset(0, 2)
tblvar(4, 1) = ActiveCell.Offset(0, 3)
Sheets('Données').Protect
Workbooks.Open Filename:='I:\\temp\\NewGestion.xls'
Sheets('Priorités').Select
Range('A8').End(xlDown).Offset(1, 0).Select
ActiveCell.Value = tblvar(1, 1)
ActiveCell.Offset(0, 2) = tblvar(2, 1)
ActiveCell.Offset(0, 3) = tblvar(3, 1)
ActiveCell.Offset(0, 4) = tblvar(4, 1)
ActiveCell.Offset(0, 5) = tblvar(5, 1)
 
P

Phil

Guest
Bonjour,

Je suis donc obliger de faire avec n ligne, il n'a y donc rien de plus simple pour charger et des charger ces valeurs depuis mon tableau
tabl.

Merci pour votre aide et bonne journée


Phil
 

Moa

XLDnaute Occasionnel
Salut !

Tu as raison, il y a plus simple :

Dim Tablo as Variant
Tablo = Range('A1:D1')
Dim i as integer

Workbooks.Open Filename:='I:tempNewGestion.xls'
Sheets('Priorités').Activate

i = Sheets('Priorités').Range('A8').End(xlDown).Offset(1, 0).Row

Range('A' & i & ':' & 'D' & i ) = Tablo

A tester


@ +++

Moa

Message édité par: Moa, à: 06/06/2005 15:29

Message édité par: Moa, à: 06/06/2005 15:33
 

Moa

XLDnaute Occasionnel
RE !

Attention, si ton tableau doit s'agrandir et avoir plusieurs lignes ou colonnes, tu devras modifier la macro en conséquence.

Ou alors, créer dès à présent une ou plusieurs autres variables.

Exemple, si ton tableau doit comporter quatre lignes, ajouter 3 à 'i' à cet endroit :

Range('A' & i & ':' & 'D' & i + 3) = Tablo

De même, si tu dois rajouter une colonne par la suite, créer tout de suite une variable, pour ton nombre de colonnes exactes.

Car en fait la plage de cellules de copie de ton tableau doit-être de même dimension que la plage de ton tableau.

Exemple : Si tu n'écrivais que :

Range('A' & i ') = Tablo

Tu n'aurais que la première valeur de ton tableau recopiée.

En fait, cette façon de recopier une plage de cellule est bien différente d'un ActiveSheet.Paste

Un plus : Il est préférable d'utiliser cette ligne de code :

i = Sheets('Priorités').Range('A65000').End(xlUp).Row

à la place de :

i = Sheets('Priorités').Range('A8').End(xlDown).Offset(1, 0).Row


@ +++

Ma

Message édité par: Moa, à: 06/06/2005 16:03
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Phil, Moa, bonsoir le forum,

Moa j'ai testé ton code et ça ne fonctionne pas, alors je me permets de proposer cela :


Sub NewGestion()
Dim tblvar(4) As String 'déclare la variable tblvar (tableau de 5 item de 0 à 4)
Public lf As Integer 'déclare la variable lf
Dim x As Byte 'déclare la variable x
Windows('Wordversexcel.XLS').Activate
Sheets('Données').Select
For x = 0 To 4 'boucle sur 5 items
tblvar(x) = Cells(1, x + 1) 'remplit le tableau des valeurs des cellules A1 à E1
Next x 'prochain item de la boucle
Workbooks.Open Filename:='I:tempNewGestion.xls'
Sheets('Priorités').Select
lf = Range('A8').End(xlDown).Offset(1, 0).Row 'définit la variable lf
For x = 0 To 4 'boucle sur 5 cellules
Cells(lf + x, 1) = tblvar(x) 'remplit la plage A_lf:A_lf+4 par les valeurs du tableau
Next x 'prochaine cellule
End Sub
 

Moa

XLDnaute Occasionnel
Salut RObert !

Si si il fonctionne..Héhé..seulement, il n'est pas complet, j'ai simplement mis le point sur la partie qui lui manquait.

Il doit l'adapter à ses besoins !

Quand je l'ai écrit, je l'ai fait directement dans le message, puis je l'ai testé et il fonctionne, du moins chez moi.

En fait, je me suis inspiré d'un exemple que je m'étais fait très récemment.

@ +++

Moa
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le Fil,

Oui Moa, mille excuses, tu as tout a fait raison, ça fonctionne parfaitement. Hier quand je l'ai testé j'ai eu un message d'erreur et comme tu avais écris à tester j'ai pensé que l'erreur venait de chez toi alors que c'était moi qui avait dû mal retranscrire dans mon exemple.
Je te prie de bien vouloir m'excuser.
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
341
Réponses
21
Affichages
1 K

Statistiques des forums

Discussions
312 488
Messages
2 088 840
Membres
103 972
dernier inscrit
steeter