VBA - Code pour aller une ligne plus bas (la première ligne vide)

ZoliveR

XLDnaute Nouveau
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

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!
 

ZoliveR

XLDnaute Nouveau
Re : VBA - Code pour aller une ligne plus bas (la première ligne vide)

Salut Mutzik, c'est gentil mais je ne veux pas aller à la dernière ligne de la feuille (sinon j'y serais déjà arrivé mais à la première ligne vide du classeur. C'est à dire que si maintenant la première ligne vide serait A3, dans un mois après avoir rempli quelques formulaires, je pourrais fort bien être à la ligne A27 car il y a 25 lignes remplies et 2 lignes de titre-sous-titre.

Merci de ton aide.



==

Salut Jean-Marcel. Est ce que parce que je n'ai pas dit bonjour au début de mon sujet? C'est assez rare que je ne mette pas ce sésame mais vois-tu cela arrive. Sinon je ne vois pas qu'est ce que le lien peut m'aider dans mes recherches, car il ne contient pas la réponse à ma question. Et si par exemple c'était pour me rappeler de dire bonjour au début, tu aurais pu le dire dans le texte. Je suis un ancien modérateur avec quelques années au compteur et pour te donner un exemple, ce serait un peu comme si je disais "Tiens voila j'ai un p'tit lien pour t'aider dans tes recherches: http://tinyurl.com/xlxldwd"
J'exagère sans doute un peu mais on se comprends. J'ai aucune leçon à te donner mais mon but c'était d'amener une certaine réflexion.
 

jeanpierre

Nous a quitté
Repose en paix
Re : VBA - Code pour aller une ligne plus bas (la première ligne vide)

Bonjour ZoliveR, mutzik, Jean-Marcel,

mutzik étant déconnecté, je me permets de te répondre.

"C'est à dire que si maintenant la première ligne vide serait A3, dans un mois après avoir rempli quelques formulaires, je pourrais fort bien être à la ligne A27 car il y a 25 lignes",

Justement, c'est que fait le code de mutzik, il part du bas et s'arrête sur la première ligne vide, c'est instantané.

Bon après-midi.

Jean-Pierre
 

kjin

XLDnaute Barbatruc
Re : VBA - Code pour aller une ligne plus bas (la première ligne vide)

Bonsoir,
A tester
Code:
Sub FormAuto()
FichDest = ActiveWorkbook.Name
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").Copy Workbooks(FichDest).Sheets("DB Formulaires").Range("A65000").End(xlUp).Offset(1, 0)
ActiveWindow.Close

End Sub
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 851
dernier inscrit
vaiata