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

Insertion de lignes dans un classeur fermer

  • Initiateur de la discussion Initiateur de la discussion br44
  • 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 !

br44

XLDnaute Impliqué
Bonjour le forum

Une petite question qui me permertrait d'avance. Est-il possible inserer une ligne supplèmantaire dans classeur "A" fermer à partir d'un classeur "B" ouvert ? et si oui quelle serait cette procèdure ?

j'ai essayé avec une macros enregistrer mais ça ne fonctionne pas .

j'ai tester ceci mais ces pareil

Workbooks.open "A.Xls"
ActiveWorkbook.RunAutoMacros.XlAutoOpen
end sub
j'ai placé la macro suivantantes dans le classeur "A.xls" dans le thisWorkbooks
private Sub Macro1
Rows("17:17").Select
Selection.Insert Shift=XlDown
Selection .Insert Shift= XlDown
End Sub

En résumè :

je voudrais pouvoir inserer deux dans le classeur "A.xls" à partir de mon classeur ("B.xls")
pour ensuite copier des donnèes sur les nouvelles lignes inserèes .

Merci par ,avences de votres aide . je vous dis donc à plus sur se fil
br44
 
Re : Insertion de lignes dans un classeur fermer

Bonjour Br44, le Forum

J'ai bien l'impression que tu cherches à faire quelque chose d'impossible, ou sinon bien compliqué avec un usage de codes plus que "CapiloTractés".

Avec ADO "ActiveX Data Object" on peut lire, et même écrire dans un classeur fermé, mais son usage normal en reste là, (enfin à ma connaissance, car il faut se méfier du "Gang des Michels d'XLD" qui m'ont montré plus qu'un barbatruc avec ADO)

Donc ce stade de mes connaissances, l'insertion d'une ligne sur classeur fermé, ne se ferait que si tu as une clef pour chaque enregistrement, un peu comme dans Access, et que tu ailles écrire en dernière ligne de ton classeur, pour que celui-ci reçoive ce nouvel enregistrement, ensuite ce serait plutôt un Tri sur cette clef au moment de l'ouverture de ce dit classeur pour simuler l'insertion afin de retrouver le nouvel enregistrement dans un ordre voulu.

Pour ma part, ce serait un peu comme inventer la roue.

Une autre approche serait de faire un ADO RecordSet de tous les enregistrements de ce classeur fermé, de les traîter temporairement dans une feuille temporaire de ton classeur ouvert pour faire l'insertion, et de renvoyer le tout par ADO en écrasant les enregistrements de ton classeur fermé...

Pour ma part, c'est très bourrin comme méthode et selon la taille du classeur, ça peut prendre du temps aussi.

Sinon il reste aussi une méthode de sioux, ce serait d'ouvrir le classeur mais en mode Hidden, donc transparent pour l'utilisateur. Tu travaillerais dessus de la même manière qu'un classeur ouvert sans te casser la tête, voici un petit code :

Code:
Option Explicit
[COLOR=darkgreen][B]'CONSTANTES A PARAMETRER EN FONCTION DE TON FICHIER CIBLE[/B][/COLOR]
Const LeCheminDuFichierCible As String = "C:\Documents and Settings\TE\Mes documents\"
Const LeNomDuFichierCible As String = "Cible.xls"
Const LeNomdeLaFeuilleCible As String = "Feuil1"
 
Sub MAJ_WorkBook()
Dim WBcible As Workbook
 
Application.ScreenUpdating = False
Set WBcible = Workbooks.Open(LeCheminDuFichierCible & LeNomDuFichierCible)
ActiveWindow.Visible = False
'Ton Code
    With WBcible.Worksheets(LeNomdeLaFeuilleCible) [COLOR=darkgreen][B]'<<< IMPORTANT INSTANCE AU CLASSEUR CACHE[/B][/COLOR]
    .Rows("17:17").Insert Shift:=xlDown
    .Cells(17, 1) = "Voici un nouvel enregistrement BIS"
    End With
'Fin de ton code
Windows(LeNomDuFichierCible).Visible = True
WBcible.Close True
Application.ScreenUpdating = True
MsgBox "Opération de MAJ terminée sur " & LeNomDuFichierCible
End Sub

Pour tester ce code, il te suffit de créer un fichier Cible et d'adapter les Constante en top de Module.

Une vraie approche propre serait d'utiliser Access en Base de Données

Bon Courage et bon travail
@+Thierry
 
Re : Insertion de lignes dans un classeur fermer

re: bonjour Thierry ,le forum

Merci pour t'as rèponses et t'es conseil .

mais j'ai peut-être une solution ,mais il me faudrait un petit coup de main .
j'ai placè cette procèdure dans un unserfrom mais elle ne fonction qu'une seul fois .
voici ma procèdure:

'Dèclare la variable chemin
Dim Chemin As String
'Dèclare les varaibles Wb1 et Wb2
Dim wb1 As Workbook
Dim Wb2 As Workbook
'Dèclare la variable Mois
Dim Mois As String

'Dèfinit la variable chemin
Chemin = "C:\RAPID\GESTION\SC.xls"
'Dèfinit les variables Wb1 et Wb2
Set wb1 = Workbooks.Open(Chemin)
Set Wb2 = ThisWorkbook

'j'ouvre le classeur "SC.xls"
wb1.Activate
'j'insert une ligne supplèmentaire
Rows("16:16").Select
Selection.Insert Shift = xlDown
'J'enregistre la modification dans le classeur" sc.xls"
wb1.Save
'je ferme le classeur "Sc.xls"
wb1.Close

Ma question : Est-il possilble de modifier cette procèdure pour quelle m'insert 2 lignes en même temps ? car si j'ajoute ceci :

Selection.Insert Shift = xlDown

j'ai une erreur "1004" qui m'aparait et cela même si deplace la procèdure dans un autres Userfrom .

en espèrant une rèponse de t'as part où du forum je vous dis à plus sur se fil et merci part avence . br44
 
Re : Insertion de lignes dans un classeur fermer

Bonjour Br44, le Forum

Oui on peut inserrer autant de lignes que l'on veut, regarde bien dans le code :
Code:
Option Explicit
[COLOR=darkgreen][B]'CONSTANTES A PARAMETRER EN FONCTION DE TON FICHIER CIBLE[/B][/COLOR]
Const LeCheminDuFichierCible As String = "C:\Documents and Settings\TE\Mes documents\"
Const LeNomDuFichierCible As String = "Cible.xls"
Const LeNomdeLaFeuilleCible As String = "Feuil1"
 
Sub MAJ_WorkBook()
Dim WBcible As Workbook
 
Application.ScreenUpdating = False
Set WBcible = Workbooks.Open(LeCheminDuFichierCible & LeNomDuFichierCible)
ActiveWindow.Visible = False
[COLOR=darkgreen]'Ton Code[/COLOR]
    With WBcible.Worksheets(LeNomdeLaFeuilleCible) '<<< IMPORTANT INSTANCE AU CLASSEUR CACHE
        [COLOR=red][B].Rows("16:17").Insert Shift:=xlDown
[/B][/COLOR]        .Cells([COLOR=red][B]16[/B][/COLOR], 1) = "Voici un nouvel enregistrement [B]Ligne 16[/B]"
        .Cells([COLOR=red][B]17[/B][/COLOR], 1) = "Voici un nouvel enregistrement [B]Ligne 17[/B]"
    End With
[COLOR=darkgreen]'Fin de ton code[/COLOR]
Windows(LeNomDuFichierCible).Visible = True
WBcible.Close True
Application.ScreenUpdating = True
MsgBox "Opération de MAJ terminée sur " & LeNomDuFichierCible
End Sub

Bonne Journée

@+Thierry
 
Re : Insertion de lignes dans un classeur fermer

re: Bonjour le forum ,Bonjour Thierry

Merci à toi au grand prêtre du vba ,dèsolé pour ne pas avoir eu les yeux en face des trous .

Je plaisante ,mais sinsèrement merci et bon courage pour cette journée commencée si tôt .
Je te dis à bientôt sur le forum
BR44
 
- 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

Discussions similaires

Réponses
5
Affichages
910
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…