> Tous les forums > Forum Bureautique
 Ligne à recopier en VBASujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
bruce68
  Posté le 19/12/2006 @ 23:11 
Aller en bas de la page 
Petit astucien

Bonsoir à tous

Que faut il inscrire dans la macro du fichier ci-joint pour enregistrer que les valeurs pour les lignes nommées: Lig_1 à Lig_5

Je vous remercie pour votre aide.

Excel 2003

http://cjoint.com/?mtxgvZtMby

Publicité
galopin01
 Posté le 20/12/2006 à 03:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonjour,

La solution :

Sub sauve()
Dim Arr(), RefL$
With Sheets("BASE")
i = .Range("A65536").End(3)(2).Row
.Cells(i, 1) = Sheets("Formulaire").Range("F3")
.Cells(i, 2) = Range("date")
.Cells(i, 3) = Range("Nom")
.Cells(i, 4) = Range("Prenom")
.Cells(i, 5) = Range("Adresse")
.Cells(i, 6) = Range("CP")
.Cells(i, 7) = Range("Ville")
For x = 1 To 5
RefL = "Lig_" & x
Arr() = Range(RefL)
For k = 1 To 4
.Cells(i, 3 + k + 4 * x) = Arr(1, k)
Next
Next
.Cells(i, 28) = Range("ToHT")
.Cells(i, 29) = Range("Taux")
.Cells(i, 30) = Range("TVA")
.Cells(i, 31) = Range("TotTTC")
End With
End Sub

Nota : Tu peux utiliser les crochets [...] pour des ébauches mais à éviter dans un souci d'optimisation.
idem pour les offset et les select qui provoquent un ralentissement important : dans l'immédiat c'est presque invisible, sur des macros plus longues c'est toute la différence entre une macro qui prend 20 secondes et la même qui fait le boulot en 2 secondes...

A+



Modifié par galopin01 le 20/12/2006 10:48
bruce68
 Posté le 21/12/2006 à 01:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir Galopin

Merci pour cette réponse rapide , c'est excellent.

Que veut dire : Dim Arr(), RefL$

A quoi sert : With

galopin01
 Posté le 21/12/2006 à 04:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonjour,
Pour ce genre de question portant sur le vocabulaire VBA, bien vouloir utiliser la touche F1

C'est le meilleur des tuto sur VBA et

le moyen incontournable de progresser !

Dans la fenêtre de code il suffit de cliquer sur le mot inconnu, faire F1 et suivre les explications (ne pas négliger non plus les liens hypertexte associés : exemples définitions...)

Dim et With sont des instructions optimiseurs de code.
Dim déclare les variables qu'on va utiliser :

Arr() signifie la variable Arr est de type Tableau (Array)
Refl$ signifie la variable Refl est de type String

En bonne logique j'aurais du déclarer aussi les variables i, k et x ...
J'ai négligé de le faire volontairement pour souligner l'importance des deux variables Arr et Refl
qui sont la clef de ton problème d'adressage.

With Sheets("BASE") permet d'éviter de répéter à chaque ligne :
i = Sheets("BASE").Range("A65536").End(3)(2).Row
Sheets("BASE").Cells(i, 1) = Sheets("Formulaire").Range("F3")
Sheets("BASE").Cells(i, 2) = Range("date")
Sheets("BASE").Cells(i, 3) = Range("Nom")
Sheets("BASE").Cells(i...

A+



Modifié par galopin01 le 21/12/2006 04:59
bruce68
 Posté le 21/12/2006 à 13:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour galopin

Merci pour ces precisions

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Recopier vers une colonne à partir d'une ligne
TABLEAU RECOPIER UNE LIGNE SUR DEUX
[VBA+suppression conditionnelle de ligne]
copier ligne si cellule vide
Document modifiable en ligne
recherche la ligne et passe a la suivante
Thunderbird des majuscules en début de ligne
nb de liens dans une plage appartennant à la même ligne Horiz. ou verti...
Word 2007 : Comment supprimer tous les retours à la ligne indésirables
ligne "à l'infini"
Plus de sujets relatifs à Ligne à recopier en VBA
 > Tous les forums > Forum Bureautique