Comment incrémenter une ligne Excel

lucie35

XLDnaute Nouveau
Bonjour

Etant encore une novice en VB, je vous demande votre aide :)


J'aimerais savoir comment incrémenter des lignes? je sais que pour incrémenter une colonne il suffit simplement de faire une boucle for avec "i" comme vraiable et d'écrire: range("i1,i3,i5") par exp, sauf que pour les lignes je sais pas trop comment faire)?

- Du coup si je sais comment incrémenter mes lignes, ma boucle for doit donc parcourir tout mon fichier de départ et coller chaque lignes (à chaque itération) dans des emplacements fixes dans mon fichier d'arrivé, sachant que chaque ligne sera collé dans un fichier "arrivé" a part entière.--> j'ai donc un problème sur la syntaxe du "coller", je sais pas comment faire pour coller chaque ligne sur chaque fichier avec ma variable de la boucle "for".

- Et pour finir, j'arrive a créer plusieurs fichier "arrivé" en un clic (with un "modele") mais j'arrive pas à les enregistrer :s --> le problème vient peut etre du nom de fichier? faut ptet mettre une variable (string ou integer??) qu on incrémente a coté du nom?? --> mais ça m'affiche tjr une erreur?

Voila voila :))

Si qq à une idée....

Merci d'avance
 

vgendron

XLDnaute Barbatruc
Re : Comment incrémenter une ligne Excel

bonjour,

pour incrémenter une ligne, c'est comme pour une colonne:

for i =1 to DernièreLigne
Cells(i,j)="ce que tu veux coller comme data"
i=i+1
Next i

si tu veux faire sur la colonne, tu fais la boucle sur j

pour le reste. poste ton fichier exemple qu'on y voit un peu plus clair
 

lucie35

XLDnaute Nouveau
Re : Comment incrémenter une ligne Excel

Voici ma macro:

j'ai commencé par créer un modele "départ arrivé" a partir de mon fichier.
je selectione la permière ligne (grenoble,...,38000) que je copie dans le classeur arrvié de mon nouveau fichier.

Sub Macro5()
'
' Macro5 Macro
'

'
Workbooks.Add Template:= _
"C:\Users\LDNB0036\AppData\Roaming\Microsoft\Templates\Départ-Arrivé.xltm"

Windows("Départ-Arrivé.xlsx").Activate ' copie la cellule gernoble dans la cellule ville du fichier arrivé
Range("A4").Select
Selection.Copy
Windows("Départ-Arrivé1").Activate
Range("C17").Select
ActiveSheet.Paste

Windows("Départ-Arrivé.xlsx").Activate
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Départ-Arrivé1").Activate
Range("C15").Select
ActiveSheet.Paste

Windows("Départ-Arrivé.xlsx").Activate
Range("C4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Départ-Arrivé1").Activate
Range("C16").Select
ActiveSheet.Paste

Application.CutCopyMode = False
ChDir "C:\Users\LDNB0036\Desktop"
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\LDNB0036\Desktop\Départ-Arrivé1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Windows("Départ-Arrivé.xlsx").Activate

End Sub

Du coup maintenant faut faire une boucle for pour répeter cette opération 2 fois (en créant 2 autres fichiers) et arriver à les enregistrer :S

:))
 

tototiti2008

XLDnaute Barbatruc
Re : Comment incrémenter une ligne Excel

Re,

Oui, a priori il suffit de mettre tout ça dans une boucle comme proposé par vgendron
Il est rare d'avoir à sélectionner les cellules en VBA, tu peux donc te débarrasser des Select de ton code

peut-être un truc comme ça (pas testé, je n'ai pas ton modèle)

Code:
Sub Macro5()
Dim i as long, wkb as workbook
For i = 4 to 7
    Workbooks.Add Template:= _
        "C:\Users\LDNB0036\AppData\Roaming\Microsoft\Templates\Départ-Arrivé.xltm"
    set wkb = activeworkbook
wkb.range("C17").value = workbooks("Départ-Arrivé.xlsx").Range("A" & i).value
wkb.range("C15").value = workbooks("Départ-Arrivé.xlsx").Range("B" & i).value
    wkb.range("C16").value = workbooks("Départ-Arrivé.xlsx").Range("C" & i).value
    
    wkb.SaveAs Filename:= _
        "C:\Users\LDNB0036\Desktop\Départ-Arrivé" & i - 3 & ".xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
    wkb.close false
next i
    
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : Comment incrémenter une ligne Excel

Bonjour lucie35,

il manque juste une ou deux .sheets entre wkb et range

En effet ;)

un truc comme ça donc

Code:
Sub Macro5()
Dim i as long, wkb as workbook
For i = 4 to 7
    Workbooks.Add Template:= _
        "C:\Users\LDNB0036\AppData\Roaming\Microsoft\Templates\Départ-Arrivé.xltm"
    set wkb = activeworkbook
wkb.Sheets(1).range("C17").value = workbooks("Départ-Arrivé.xlsx").Range("A" & i).value
wkb.Sheets(1).range("C15").value = workbooks("Départ-Arrivé.xlsx").Range("B" & i).value
    wkb.Sheets(1).range("C16").value = workbooks("Départ-Arrivé.xlsx").Range("C" & i).value
    
    wkb.SaveAs Filename:= _
        "C:\Users\LDNB0036\Desktop\Départ-Arrivé" & i - 3 & ".xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
    wkb.close false
next i
    
End Sub
 

Discussions similaires

Réponses
16
Affichages
536
Réponses
7
Affichages
383

Statistiques des forums

Discussions
312 384
Messages
2 087 841
Membres
103 667
dernier inscrit
datengo