Couper des lignes et les coller dans une autre feuille

Résolu
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007 - 4 oct. 2006 à 22:08
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 5 oct. 2006 à 09:36
Bonsoir tout le monde,

Depuis access 2002, je dois importer des données mais au préalable, je dois mettre mon fichier en forme.
Je voudrais intégrer à la fonction ci-dessous ( écrite par JMO )
couper les lignes de 1 à 12 incluse de la feuille "clients" et les coller à partir de la 2ème ligne dans la feuille "référence" du même classeur.
Une autre fonction précède celle-ci, elle sert à déterminer les variables.

QUI PEUT M'AIDER, SVP ?
Merci d'avance


 


Function ShowFolderListmobi(path)
'présentation originale: 1 feuille appelée req...
Dim fso:        Set fso = CreateObject("Scripting.FileSystemObject")
Dim Dossiers:   Set Dossiers = fso.GetFolder(path)
Dim fichiers:   Set fichiers = Dossiers.Files


Dim fichier, f, strListe


For Each fichier In fichiers
    
     Set f = fso.GetFile(fichier)
    If fso.GetExtensionName(fichier) = "xls" Then
    
       Dim objExcel, objClasseur
       Set objExcel = CreateObject("Excel.Application")
       Set objClasseur = objExcel.Workbooks.Open(fichier)


       objExcel.DisplayAlerts = False 'enlève l'alerte
       objExcel.Application.Visible = False

'test existence d'une feuille "référence" comme 1ère feuille, si pas on la renomme
      'MsgBox objClasseur.Sheets(1).Name,,"Nom de la Feuil1 avant modification"
      If objClasseur.Sheets(1).Name <> "Référence" Then
      objClasseur.Sheets(1).Name = "clients"
   End If
  
     'Renommer la derniere feuille
      If objExcel.ActiveWorkbook.Sheets(1).Name <> "Référence" Then
         objExcel.ActiveWorkbook.Sheets.Add
         objExcel.ActiveWorkbook.Sheets(objExcel.Sheets.Count - 1).Name = "Référence"
      End If


      'écriture du nom du fichier dans la 1ère cellule de "Référence " c'est pour çà qu'il faut copier à partir de la ligne 2

      objExcel.ActiveWorkbook.Sheets("Référence").Select
      objExcel.Cells(1, 1).Value = fichier
  
C'est ici que devrait s'intercaler 
couper lignes 1 à 12 de la feuille "clients"
coller à partir de la ligne 2 dans la feuille "référence"

      'WScript.Sleep "500"
      'MsgBox objClasseur.Sheets(1).Name,,"Nom de la Feuil1 après modification"


      objExcel.ActiveWorkbook.SaveAs fichier 'sauvegarde sous le même nom
      objExcel.ActiveWorkbook.Saved = True 'sauvegarde true=oui false=non
      'objExcel.DisplayAlerts=True 'remet l'alerte
      'objExcel.Application.Visible=True 'remet la visibilité
      objExcel.ActiveWorkbook.Close 'Fermeture d'Excel


    
      Set objExcel = Nothing
      Set objClasseur = Nothing
   End If
Next
Set f = Nothing
Set fichiers = Nothing
Set Dossiers = Nothing
Set fso = Nothing
DoCmd.Hourglass False
End Function

12 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 oct. 2006 à 09:10
Salut,
Voili voilou

'Coupe les lignes 1 à 12 de la feuille "clients"
    objExcel.ActiveWorkbook.Worksheets("clients").Rows("1:12").Cut 
    'Insert la selection coupé a partir de la ligne 2
    '(la ligne 2 se retrouvera donc APRES la selection insérée
    objExcel.ActiveWorkbook.Worksheets("Référence").Rows("2:2").Insert Shift:=xlDown 
 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+,   Ju£i?n
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 oct. 2006 à 22:21
essaye ceci :

Worksheets("clients").Rows("1:12").Copy Destination:=Worksheets("référence").Rows("2")

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 oct. 2006 à 22:23
Oupps, pour couper, remplace .Copy par .Cut

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
4 oct. 2006 à 22:37
Bonsoir,

il y a plantage (erreur de syntaxe)  sur
Destination:=Worksheets("référence").Rows("2")
Merci
JL
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 oct. 2006 à 00:29
Peut-être avec

Destination:=Worksheets("référence").Range("A2")   ?

MPi
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 07:11
Bonjour MPI,

Merci pour ta réponse mais çà ne marche pas ( erreur de syntaxe ) sur la ligne
Destination:=Worksheets("référence").Range("A2")   ?
Bonne journée
JL
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 oct. 2006 à 08:53
Bizarre, chez moi ça marche impec

Vérifie bien le nom de tes feuilles, il doit etre strictement exact.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 09:05
Re bonjour,
J'ai bien vérifié, c'est correct ma la ligne destination renseigne une erreur de syntaxe ?

Worksheets("ident").Rows("1:12").Copy
 Destination:=Worksheets("Référence").Range("A2")

Merci
jl
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 oct. 2006 à 09:19
Dsl, je viens de relire ta question, et je viens de comprendre que tu faisais la manip depuis Access
Moi je faisais l'essai directement dans Excel.

Il faut donc bien préciser l'objExcel. devant les 2 Worksheets dans la ligne que j'ai donnée.
A l'image de ce que viens de te donner Julien.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 09:23
SUPERRRRRRRRR,

Merci Julien, çà marche .
Et si je devais ajouter  que la cellule A1 (clients)doit être éagle à "USER"  pour que le couper coller soit effectué, quelle serait la syntaxe stp ?

objExcel.ActiveWorkbook.Worksheets("clients").Rows("1:12").Cut

merci encore
jl
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 09:25
Merci Casy, c'est gentil de ta part.


jl
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 oct. 2006 à 09:36
Salut,


Attention le code suivant est sensible a la Casse (si je ne me trompe pas)
Donc le Couper / Coller ne se fera pas si A1 = User
Si tu veux qu il se fasse quand meme tu dois utiliser Ucase




If objExcel.ActiveWorkbook.Worksheets("clients").Range("A1").Value = "USER" Then 
    'Coupe les lignes 1 à 12 de la feuille "clients"
    objExcel.ActiveWorkbook.Worksheets("clients").Rows("1:12").Cut 
    'Insert la selection coupé a partir de la ligne 2
    '(la ligne 2 se retrouvera donc APRES la selection insérée
    objExcel.ActiveWorkbook.Worksheets("Référence").Rows("2:2").Insert Shift:=xlDown 
End If 
 







<small> Coloration syntaxique automatique [AFCK]</small>

       







 






@+,   Ju£i?n
0
Rejoignez-nous