Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

ouvrir un classeur et trouver premiere ligne vide

  • Initiateur de la discussion Initiateur de la discussion steevassie
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

steevassie

Guest
bonjour,

J'ai crée une feuille de données pour permettre un suivi des commandes.Mais une fois celle ci terminer, j'aimerai les enregistrer dans une feuille à part.
J'ai donc créée une macro pour selectionner les lignes correspondantes, mais je n'arrive pas à ouvrir un classeur dans un dossier, et à selectionner la 1ere ligne vide de la feuille "2007" de ce classeur pour y coller mes informations.
Voici la macro:

Range( _
"A4:E138,G4:G138,K4:K138,L4:M138,O4😛138,R4:R138,T4:T138,V4:V138,W4:W138,X4:X138,Y4:AC138,AG4:AG138" _
).Select
Range("AG4").Activate
Selection.Copy
Windows("ARCHIVES CDES").Activate
Sheets("2007").Activate
ligne = Cells.Find("*", Range("A3"), , , xlByRows, xlPrevious).Row + 1
Range("A" & ligne).PasteSpecial xlPasteValues
ActiveSheet.Paste


Merci d'avance.
 
Re : ouvrir un classeur et trouver premiere ligne vide

Bonjour,

une ligne de code pour ouvrir un fichier excel:

ChDir "U:\...."
Workbooks.Open Filename:= _
"U:\....\Nomduclasseur.xls"

sélectionner la page:

Worksheets("2007").Select

Sélectionner la première ligne vide:

Cells(Range("A3").End(xlDown).Row + 1, 1).Select

C'est ce qu'il te fallait?

ca donnerait un programme du genre:

Range( _
"A4:E138,G4:G138,K4:K138,L4:M138,O4😛138,R4:R138,T 4:T138,V4:V138,W4:W138,X4:X138,Y4:AC138,AG4:AG138" _
).Select
Selection.Copy

ChDir "U:\...."
Workbooks.Open Filename:= _
"U:\....\Nomduclasseur.xls"

Windows("ARCHIVES CDES.xls").Activate
Worksheets("2007").Select
Cells(Range("A3").End(xlDown).Row + 1, 1).Select
ActiveSheet.Paste
ActiveWindow.Close False

J'ai bien compris 😀 ?
 
Re : ouvrir un classeur et trouver premiere ligne vide

c'est exactement ça.
Pour indiquer le chemin, ça ne marche pas, je pense que ce doit etre du à une erreur dans le chemin.
Cela donne ça:

ChDir "C:\Documents and Settings\STEEVE\Mes documents\archives commandes.xls"
Workbooks.Open Filename:= _
"C:\Documents and Settings\STEEVE\Mes documents\archives commandes.xls"
Windows("archives commandes.xls").Activate

je ne comprends pas..pourtant c'est le bon chemin
 
Dernière modification par un modérateur:
Re : ouvrir un classeur et trouver premiere ligne vide

re,

j'ai essayé avec quelque chose comme ca et ca marche:

ChDir _
"C:\Documents and Settings\test"
Workbooks.Open Filename:= _
"C:\Documents and Settings\test\Etat multimetre 2.xls"

Sheets("Feuil1").Select

........

Le premier (en vert) donne la direction du dossier où est le classeur (PAS de .xls)
Le deuxième (en rouge) donne le nom du classeur

Désolé le bout de code donné tout à l'heure n'était pas assez explicit 😀
 
Re : ouvrir un classeur et trouver premiere ligne vide

ça a l'air de marcher maintenant, je dis ça a l'air car je n'arrive pas à trouver le code pour trouver la premiere ligne vide.
Voici mon code:
ChDir _
"C:\Documents and Settings\STEEVE\Mes documents"
Workbooks.Open Filename:= _
"C:\Documents and Settings\STEEVE\Mes documents\archives commandes.xls"
Sheets("2007").Select
ligne = Cells.Find("*", Range("A3"), , , xlByRows, xlPrevious).Row + 1
Range("A" & ligne).PasteSpecial xlPasteValues

ActiveWindow.Close False
 
Re : ouvrir un classeur et trouver premiere ligne vide

cà marche des fois, mais je pense que le pb doit venir d'autre part
Je mets le code en entier, désolé, c'est un peu long


ActiveSheet.Range("$A$3:$AD$137").AutoFilter Field:=1, Criteria1:="FINI"
Range("A4:E138,G4:G138").Select
Range("G4").Activate
ActiveWindow.SmallScroll ToRight:=6
Range("A4:E138,G4:G138,K4:K138,L4:M138,O4😛138").Select
Range("O4").Activate
ActiveWindow.SmallScroll ToRight:=9
Range("A4:E138,G4:G138,K4:K138,L4:M138,O4😛138,R4:R138,T4:T138").Select
Range("T4").Activate
ActiveWindow.SmallScroll ToRight:=4
Range( _
"A4:E138,G4:G138,K4:K138,L4:M138,O4😛138,R4:R138,T4:T138,V4:V138,W4:W138,X4:X138,Y4:AC138,AG4:AG138" _
).Select
Selection.Copy
ChDir _
"C:\Documents and Settings\STEEVE\Mes documents"
Workbooks.Open Filename:= _
"C:\Documents and Settings\STEEVE\Mes documents\archives commandes.xls"
Sheets("2007").Select
ligne = [a65000].End(xlUp).Row
Range("A" & ligne).PasteSpecial xlPasteValues

ActiveWindow.Close False
ActiveWindow.LargeScroll ToRight:=1
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Windows("suivi steeve2000.4.1.xls").Activate
ActiveWindow.ScrollColumn = 21
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Application.CutCopyMode = False
Selection.ClearContents
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 25
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 22
ActiveWindow.ScrollColumn = 21
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveSheet.Range("$A$3:$AD$137").AutoFilter Field:=1
Range("A4").Select
End Sub
 
Re : ouvrir un classeur et trouver premiere ligne vide

Bonsoir, en supposant que les deux fichiers sont ouverts, et dans le même répertoire, tu lances la macro à partir de ton fichier de destination.
la zone de critères (1 en-tête) et de destination (le nombre que tu veux) doit obligatoirement comporter les mêmes noms d'en tête que ta base.

Workbooks("steeve1.xls").Sheets("Feuil1").Range("base").AdvancedFilter Action _
:=xlFilterCopy, CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("C1😀1") _
, Unique:=False

regarde les 2 fichiers joints, et reviens si tu as un souci
 

Pièces jointes

Re : ouvrir un classeur et trouver premiere ligne vide

tiens, une autre version, si tu veux lancer ta procédure de sauvegarde du fichier 1.

Sub import2()
lerep = ActiveWorkbook.Path & "\"
Application.DisplayAlerts = False
Workbooks.Open Filename:=lerep & "steeve2.xls"
Workbooks("steeve2.xls").Activate
Workbooks("steeve1.xls").Sheets("Feuil1").Range("base").AdvancedFilter Action _
:=xlFilterCopy, CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("C1😀1") _
, Unique:=False
Application.DisplayAlerts = True
End Sub

Mais Euuuuuuuuuuh, j'en veux pas des smileys
lire : CopyToRange:=CopyToRange:=Range("C1 : D1") ' sans les espaces

PFFFFFFF!, pas facile de faire des références concernant la colonne D
 

Pièces jointes

Dernière édition:
Re : ouvrir un classeur et trouver premiere ligne vide

bonjour bhbh,
merci de ton aide mais ton code ne permet pas de trouver la première ligne vide.
Car en fait je veux couper les infos contenus dans "suivi steeve200.4.1" page "suivi" si ils ont le statut fini pour les remettre dans mon document "archives commandes en sélectionnant la 1ere ligne vide si année (colonne h) de la page "2007" =2007 sinon feuille "2008"...
Et ensuite reajuster les lignes de la feuille "suivi" en enlevant les blancs (du à la coupe).
Les données commencent en A4 pour la feuille "suivi"
Bien compliqué...
Si vous avez des idées.

Au plaisir
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…