[Résolu] Copier nouvelle ligne dans un autre classeur

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

Lone-wolf

XLDnaute Barbatruc
Bonsoir le Forum,

voilà, j'essaie de me débrouiller pour codé une macro qui copierait ligne par ligne les données dans un classeur qui se trouve dans un sous-dossier.

J'ai créé cette macro en me basant sur le code qui se trouve dans le formulaire.

Code:
'Celle-ci est la feuille Maîtresse
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i&, derlig&, ws As Worksheets, wb As Workbook, Chemin$

Chemin = ThisWorkbook.Path & "\Aide Mémoire" & "\Aide_Mémoire_VBA.xls"    ' ici la feuille esclave
Set wb = Workbook.Open(Chemin)
Set ws = wb.Worksheets("Data")

For i = 1 To Range("A65536").End(xlUp).Row
With Sheets("Data").Range(Cells(i, 1), Cells(derlig, 3)).Copy: End With

With ws
      derlig = .Range("A65535").End(xlUp).Row
      .Range(.Cells(i, 1), .Cells(derlig, 3)).Paste
ws.Activate
End With
Next i
End Sub

J'ai l'erreur: objet requis, sur cette ligne: Set wb = Workbook.Open(Chemin)

Le fichier en question: Aide Mémoire VBA

Merci pour votre aide

A+ 😎


Amicalement
Lone-wolf
 
Dernière édition:
Re : Copier nouvelle ligne dans un autre classeur

Bonsoir Bruno,

merci d'avoir répondu, j'aimerais juste savoir si c'est juste comme j'ai écrit.
Si c'est faux, alors je ne sais plus comment faire.

Edit: c'est toujours incorrect.

A+ 😎

Amicalement
Lone-wolf
 
Dernière édition:
Re : Copier nouvelle ligne dans un autre classeur

Bonjour Bruno,

voilà, je m'y suis pris autrement:

Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel&, x&

Application.ScreenUpdating = False
cel = Workbooks("Codes.xls").Sheets("Data").Range("a65536").End(xlUp).Row + 1
Workbooks("Codes").Sheets("Data").Activate

For x = 2 To cel
Workbooks("Aide_Mémoire_VBA.xls").Sheets("Data").Cells(x, 1).Value = Workbooks("Codes.xls").Sheets("Data").Cells(x, 1).Value

Workbooks("Aide_Mémoire_VBA.xls").Sheets("Data").Cells(x, 2).Value = Workbooks("Codes.xls").Sheets("Data").Cells(x, 2).Value

Workbooks("Aide_Mémoire_VBA.xls").Sheets("Data").Cells(x, 3).Value = Workbooks("Codes.xls").Sheets("Data").Cells(x, 3).Value
Next x
Application.ScreenUpdating = True
End Sub

Je sais que ce n'est pas la bonne solution, mais je l'ai fait sur des Classeurs-Tests, pour voir le résultat.


A+ 😎


Amicalement
Lone-wolf
 
Re : Copier nouvelle ligne dans un autre classeur

Re Bruno,

il me semble que comme ça c'est mieux:


Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel$, x%

Application.ScreenUpdating = False
cel = Sheets("Data").Range("a65536").End(xlUp).Row + 1
Workbooks("Codes").Sheets("Data").Activate

For x = 2 To cel
Sheets("Data").Cells(x, 1).Copy Destination:=Workbooks("Aide_Mémoire_VBA.xls").Sheets("Data").Cells(x, 1)

Sheets("Data").Cells(x, 2).Copy Destination:=Workbooks("Aide_Mémoire_VBA.xls").Sheets("Data").Cells(x, 2)

Sheets("Data").Cells(x, 3).Copy Destination:=Workbooks("Aide_Mémoire_VBA.xls").Sheets("Data").Cells(x, 3)

Next x
Application.ScreenUpdating = True
End Sub


A+ 😎


Amicalement
Lone-wolf
 
Re : Copier nouvelle ligne dans un autre classeur

Bonjour Lone-wolf, Bruno,

Pas compris le .Row + 1...

A priori, si l'on veut tout copier :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim h&
h = Workbooks("Codes.xls").Sheets("Data").[A65536].End(xlUp).Row - 1
If h = 0 Then Exit Sub
Workbooks("Codes.xls").Sheets("Data").[A2].Resize(h, 3).Copy _
  Workbooks("Aide_Mémoire_VBA.xls").Sheets("Data").[A2]
End Sub
si l'on veut copier uniquement les valeurs :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim h&
h = Workbooks("Codes.xls").Sheets("Data").[A65536].End(xlUp).Row - 1
If h = 0 Then Exit Sub
Workbooks("Aide_Mémoire_VBA.xls").Sheets("Data").[A2].Resize(h, 3) = _
  Workbooks("Codes.xls").Sheets("Data").[A2].Resize(h, 3).Value
End Sub
A+
 
Re : Copier nouvelle ligne dans un autre classeur

Bonjour Job,

Là ça m'énerve sérieusement. J'ai les deux classeurs dans le même dossier et c'est toujours cette satanée erreur qui s'affiche: l'indice n'appartient pas à la sélection.

Lone à dit:
J'ai les deux classeurs dans le même dossier
.

Oui, par-ce que normalement le classeur Codes était dans un sous-dossier.

Pourtant j'ai testé à partir d'un classeur qui se trouve sur le Bureau, en reproduisant le même schéma < Codes dans un sous-dossier et Aide_Mémoire_VBA dans le dossier principal > et là il n'y a pas u de problème.

Ce que je cherche à faire c'est:

J'ouvre normalement Aide_Mémoire_VBA, je clique sur le bouton Excel et ouvre le Classeur Codes; là, j'inscrit les nouveaux codes dans la feuille Data, et la feuille Data du Classeur Aide_Mémoire_VBA devrait normalement les copiées.

A+ 😎

Amicalement
Lone-wolf
 
Re : Copier nouvelle ligne dans un autre classeur

Bonjour,

Ta macro évènementielle* est écrite dans le module de la feuille "Data" du classeur "Codes" donc il est inutile de faire référence à cet onglet dans la procédure. Elle peut se résumer à :
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim x As Long
  If Target.Address <> "$A$1" Then Exit Sub
  For x = 1 To Range("A65536").End(xlUp).Row
     Range("A" & x & ":C" & x).Copy Workbooks("Aide_Mémoire_VBA.xls").Sheets("Data").Cells(x, 1)
  Next
End Sub

* les lignes ne sont copiées qu'après clic sur A1 à condition que le nom du second classeur soit exact !
 
Re : Copier nouvelle ligne dans un autre classeur

Bonsoir Fo_rum,

les noms des classeurs sont justes, je viens de faire le test avec la macro et toujours la même erreur.

Comme je passe par la Douane (Bin Oui! < Classeur "Aide_Mémoire_VBA.xls" c/o SUISSE -
Formulaire VBACodes / LA DOUANE
- Codes.xls c/o FRANCE > ),
et qu je suis inconnu (L'indice n'appartient pas à la sélection!! 😡); est-ce que c'est possible de (déposer la Macro à la douane 😉 ) mettre le code dans le formulaire pour qu'efin je sois reconnu?.

A+ 😎


Amicalement
Lone-wolf
 
Dernière édition:
Re : [Résolu] Copier nouvelle ligne dans un autre classeur

Bonsoir à tous,

je met le code final pour les personnes qui seraient interéssées. En plus, pas besoin d'avoir le classeur, qui reçois les données, ouvert.

EDIT: Désolé pour ce malentendu, le code est à inserer dans le formulaire Aide-Mémoire-VBA.


Code:
Private Sub UserForm_Initialize()
CopierFeuille

Sub CopierFeuille()
Application.ScreenUpdating = False
Dim Wb As Workbook, Cel As Range
Set Wb = Workbooks.Open(Filename:="C:\Classeur2.xls")

ThisWorkbook.Activate  
For Each Cel In Wb.Worksheets("Feuil1").Range("A" & ":C").Areas   'Classeur1
ThisWorkbook.Worksheets("Feuil1").Range(Cel.Address).Value = Cel.Value   'Classeur2
Next Cel

Wb.Close SaveChanges:=False
Application.ScreenUpdating = True
End Sub


Bonne soirée à tous. 😎


Amicalement
Lone-wolf
 
Dernière édition:
Re : [Résolu] Copier nouvelle ligne dans un autre classeur

Bonjour à tous


je met le code final pour les personnes qui seraient interéssées. En plus, pas besoin d'avoir le classeur, qui reçois les données, ouvert.

Ici, tu ouvres bien ton classeur 😕:

Code:
Set Wb = Workbooks.Open(Filename:="C:\Classeur2.xls")

Et attention, sur Win7, tu ne peux pas mettre de fichier à la racine du C.

Et la tu fermes sans sauvegarder, c'est normal 😕:

Code:
Wb.Close SaveChanges:=False
 
Re : [Résolu] Copier nouvelle ligne dans un autre classeur

Bonsoir MJ,

EDIT: Désolé pour ce malentendu, le code est à inserer dans le formulaire Aide-Mémoire-VBA.
Private Sub UserForm_Initialize()
CopierFeuille

Code:
Set Wb = Workbooks.Open(Filename:="C:\Classeur2.xls")

Le chemin est juste à titre d'exemple, à ceux qui utilisent le code de le modifier à leur convenance. Le classeur après l'appel est caché en quelque sorte.

Code:
Wb.Close SaveChanges:=False

A ne pas craindre, le données restent enregistrées dans les deux classeurs. Avant d'utiliser le code, j'ai fait un test avec deux classeurs vierges, je n'ai pas u de problèmes.


A+ 😎


Amicalement
Lone-wolf
 
Dernière édition:
Re : [Résolu] Copier nouvelle ligne dans un autre classeur

Bonsoir Lone-wolf, aux participants, et à ceux qui passeront par là,

Je vois que ta question fait suite à notre dialogue sur ton fil dont tu as rappelé le lien:
https://www.excel-downloads.com/thr...resentant-les-divers-macros-vba-excel.178859/

J'ai plaidé, comme d'autres, pour la ventilation des codes par rubriques.
Il semblerait que tu aies opté pour cette solution. (Ou peut-être je me trompe)

Voici donc joint; une bidouille que j'ai commencé à construire:

On met le Dossier "MES_CODES" et Classeur "STOCKAGE_VBA" où l'on veut.
L'un dans une partition, l'autre sur une clé USB...... Cela n'a pas d'importance!

- A la première ouverture du Classeur maître, il va être demandé de chercher le Dossier "MES_CODES".
- Le chemin sera enregistré dans la propriété "Mots-Clés".
- Tant que le Dossier n'aura pas changé de place; la question ne sera plus posée.
(L'emplacement du Classeur peut bouger. On peut même travailler avec une ou plusieurs copies

Avec le Bouton "LISTER LES CODES" on va choisir une application Excel dont on souhaite
récupérer l'un ou l'autre des codes pour le mettre dans sa bibliothèque.

Un Clic sur la liste permettra de visualiser le contenu.

Le Bouton "ENREGISTRER" va proposer un nom pour un nouveau Classeur et un emplacement...Et c.

Je n'ai pas traité l'utilisation qui par la suite permettra de faire une recherche dans cette base de données
Je l'ai appelée "MES_CODES" et mis quelques Sous-dossier,
mais l'utilisateur peut choisir autres noms sans avoir à toucher au "Moteur".... Ce n'est qu'un Chantier exemple.

Il y a énormément de possibilité à entrevoir, comme l'import globale du module.
(Voir aussi un répertoire de liens d'aides sur XLD, pdf, documents texte... Et c)

Note d'humour que tu comprendras certainement "Je n'ai pas soigné la présentation"

Tu regarde, et tu me dis si cela peut t'aider.

Amicalement,

Yann
 

Pièces jointes

- 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
10
Affichages
300
Réponses
5
Affichages
291
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
538
Réponses
4
Affichages
213
Retour