Dans ma quête d'une automatisation de formulaire, j'ai fait une macro pour qu'il copie colle d'une feuille A à une feuille B un fichier .txt qui contient les données du formulaire. Ce fichier text a une ligne et mon fichier Excel a plusieurs lignes.
Il fut un temps ou j'Excel-lais dans le VBA mais après une période de 10 ans de non pratique, j'ai tout oublié, alors j'ai fait tout cela via le recorder du macro.
Et je me trouve devant un problème.
A chaque fois la première, ou 3ème ligne selon que je fais avec Range A3.select, est collée mais si j'ai déjà 40 lignes de remplies, il risque de coller et écraser la ligne de titres ou sous-titres, ou pire les données d'un formulaire déjà présent.
Bref voici le code
Comment faire comprendre à Excel, avant l'opération de collage, de se mettre à la première ligne vide de la première colonne?
En language clavier j'aurais fait Ctrl+Flèche bas ; Ctrl+Flèche haut ; Flèche bas, afin qu'il se mette par exemple à la 42ème ligne si la 41 ème ligne est déjà remplie. Hors avec le recorder, si je fais ca, il me fait ces codes Up - Down et la flèche bas est pour lui interprétée physiquement en A2 (qui contient les sous-titres)
Bref, y a t'il un code dans VBA pour dire à Excel de se placer juste en dessous de la dernière ligne remplie, c'est à dire dans la première ligne vide, en sachant que de toute façons, entre la première et la dernière ligne remplie il n'y aura pas de vide entre.
Merci de votre réponse!
Il fut un temps ou j'Excel-lais dans le VBA mais après une période de 10 ans de non pratique, j'ai tout oublié, alors j'ai fait tout cela via le recorder du macro.
Et je me trouve devant un problème.
A chaque fois la première, ou 3ème ligne selon que je fais avec Range A3.select, est collée mais si j'ai déjà 40 lignes de remplies, il risque de coller et écraser la ligne de titres ou sous-titres, ou pire les données d'un formulaire déjà présent.
Bref voici le code
Code:
Sub FormAuto()
'
' FormAuto Macro
' Macro enregistrée le 29/07/2009 par ICC
'
'
Sheets("DB Formulaires").Select
Range("A1").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlUp).Select
ChDir _
"\\192.168.1.100\serveur_icc\D Formations et interventions\D3 Formation Enfance\D31 Coordination du secteur ONE\D311 Administratif\Courriers\Mail Lancement saison\Tests - Oli"
Workbooks.OpenText FileName:= _
"\\192.168.1.100\serveur_icc\D Formations et interventions\D3 Formation Enfance\D31 Coordination du secteur ONE\D311 Administratif\Courriers\Mail Lancement saison\Tests - Oli\Formulaire à traiter.txt" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True _
, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1) _
, Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array( _
28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), _
Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1))
Rows("1:1").Select
Selection.Copy
ActiveWindow.ActivateNext
ActiveSheet.Paste
ActiveWindow.ActivateNext
ActiveWindow.Close
End Sub
Comment faire comprendre à Excel, avant l'opération de collage, de se mettre à la première ligne vide de la première colonne?
En language clavier j'aurais fait Ctrl+Flèche bas ; Ctrl+Flèche haut ; Flèche bas, afin qu'il se mette par exemple à la 42ème ligne si la 41 ème ligne est déjà remplie. Hors avec le recorder, si je fais ca, il me fait ces codes Up - Down et la flèche bas est pour lui interprétée physiquement en A2 (qui contient les sous-titres)
Bref, y a t'il un code dans VBA pour dire à Excel de se placer juste en dessous de la dernière ligne remplie, c'est à dire dans la première ligne vide, en sachant que de toute façons, entre la première et la dernière ligne remplie il n'y aura pas de vide entre.
Merci de votre réponse!