Signalement 424 Objet requis

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

chris6999

XLDnaute Impliqué
Bonjour

Je souhaite aller récupérer des données depuis un fichier source dans un autre fichier à choisir à partir d'un chemin.
En l'occurrence toutes les cellules de le colonne A du fichier 2.
Ma problématique est de spécifier le nom de la feuille du fichier numéro 2 où aller chercher ces éléments.
puis de coller ces valeurs dans mon fichier d'origine.

Ma macro bloque sur la ligne Sheets("Suivi priorités").Activate (en vert dans le code).
Comment puis je forcer l'ouverture du fichier 2 sur cette feuille spécifique ?

J'ai aussi essayé le code suivant (ne fonctionne pas non plus):
Workbooks.Open Filename:=CheminFichier
ActiveWorkbook.Sheets("Suivi priorités").[A].EntireRow.Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]

Merci d'avance pour vos conseils
cORDIALEMENT

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False
'propose chemin d'accès a
CheminSrc = "C:\Mon chemin"
ChDrive "C"
ChDir CheminSrc
'Ouverture d'une boite de dialogue
CheminFichier = Application.GetOpenFilename
'S'il y a eu selection de fichier
If CheminFichier <> False Then
'J'ouvre le fichier
Workbooks.Open Filename:=CheminFichier
Sheets("Suivi priorités").Activate

'je demande à coller les valeurs de la colonne A de fichier 2 dans A1 du fichier d'originr
ActiveWorkbook.Sheets(1).[A].EntireRow.Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]
End If
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Dernière édition:
Re : Signalement 424 Objet requis

Bonjour chris

C'est cette ligne qui est fautive:

Code:
ActiveWorkbook.Sheets(1).[A].EntireRow.Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]

teste:

Code:
 ActiveSheet.Columns(1).Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]
 
Re : Signalement 424 Objet requis

Bonjour,

en faite les deux classeur excel sont ouvert, donc il faut travailler en objet.
j'ai récupérer le nom du classeur (ou les informations sont stocké et la feuille)

une fois mise en mémoire je fais la suite du code

****************************************************************
ActiveWorkbook.Sheets(1).[A].EntireRow.Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]
Ou ici

ActiveSheet.Columns(1).Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]
************************************************************************

le programme ne c'est pas reconnaitre la source car pas de chemin / ActiveWorkbook.Sheets(1) ou ActiveSheet.Columns(1)

C'est a dire qu'elle classeur activé de qu'elle feuille ?

d'où
x = Split(CheminFichier, "\")
y = UBound(x)
msgbox x(y) ' ici pour vous le nom du classeur que vous avez selectionner

puis mise en mémoire du classeur et de la feuille avec c'est instruction

Dim wskChoisie As Workbook ' definir une variable de type de class classeur
Dim wsksSuivi As Worksheet ' definir une variable de type de class feuille

puis initialisation des variable pour mise en mémoire

Set wskChoisie = Workbooks(x(y)) ' si écrit en dur on remplace x(y) par le nom de votre classeur
' Set wskChoisie = Workbooks("TEST MACRO SUIVI PRIORITE fichier 2")

si dessous le nom de la feuille écrit en dur ("Suivi priorités") qui peux etre aussi remplacer par une variable
Set wsksSuivi = wskChoisie.Worksheets("Suivi priorités")

soit maintenant ceci "wskChoisie" contient l'adresse de votre classeur et de votre feuille

donc si vous choisissais la cellule de C3 de cette feuille du classeur vous lui indiquer l'adresse
wsksSuivi.[c3] = "toto" ici vous écrivait toto dans la cellule c3 du classeur TEST MACRO SUIVI PRIORITE fichier 2 de
la feuille Suivi priorités

code ci dessous :

VB:
Private Sub CommandButton1_Click()


'extractions mensuelles
Application.ScreenUpdating = False
'propose chemin d'accès au répertoire stats brutes galaxie
  CheminSrc = "G:\SUIVI DES STOCK\Fichiers\Stats de Flux par circuit\2013\Semaine"
  ChDrive "G"
  ChDir CheminSrc
  
'Ouverture d'une boite de dialogue
CheminFichier = Application.GetOpenFilename

'S'il y a eu selection de fichier
  If CheminFichier <> False Then
    
    'J'ouvre le fichier
    Workbooks.Open Filename:=CheminFichier
    
    Dim wskChoisie As Workbook
    Dim wsksSuivi As Worksheet
    
    x = Split(CheminFichier, "\")
    y = UBound(x)
    
    Set wskChoisie = Workbooks(x(y))
    Set wsksSuivi = wskChoisie.Worksheets("Suivi priorités")
    'plus besoin Sheets("Suivi priorités").Activate
    'ActiveWorkbook.Sheets(1) = remplacer par wsksSuivi
    ' Remplacer [A] cela par ceci :
        ' Set A = Range(Cells(1, 1), Cells(Cells(65536, 1).End(xlUp).Row, 1))
    ' soit:
    ' a la place de [A]
    ' ci dessous ceci
    ' wsksSuivi.Range(A.Address)
    ' qui est equivalent a la colonne A1 a A65536 (c'est la partie Objet)
    ' Equivalent a [A1:A65536]
      
     Set A = Range(Cells(1, 1), Cells(Cells(65536, 1).End(xlUp).Row, 1))
      wsksSuivi.Range(A.Address).EntireRow.Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]

laurent
 
Dernière édition:
Re : Signalement 424 Objet requis

Re

Je viens de tester. Cela fonctionne nickel.
Le problème c'est qu'il y a ds filtres sur mon fichier 2. Le copier coller ne tient pas compte des lignes masquées et cela ne correspond plus au moment du "coller".

Est-il possible de retirer le filtre sur le fichier 2 avant de sélectionner la colonne ou de préciser dans le code de coller toutes les données y compris celles qui sont masquées?

Merci d'avance
Cordialement


Bonjour chris

C'est cette ligne qui est fautive:

Code:
ActiveWorkbook.Sheets(1).[A].EntireRow.Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]

teste:

Code:
 ActiveSheet.Columns(1).Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]
 
Re : Signalement 424 Objet requis

Bonjour Laurent

Merci pour cette proposition. Je vais la tester de ce pas

Cordialement

Bonjour,

en faite les deux classeur excel sont ouvert, donc il faut travailler en objet.
j'ai récupérer le nom du classeur (ou les informations sont stocké et la feuille)

une fois mise en mémoire je fais la suite du code


code ci dessous :

VB:
Private Sub CommandButton1_Click()



'extractions mensuelles
Application.ScreenUpdating = False
'propose chemin d'accès au répertoire stats brutes galaxie
  CheminSrc = "G:\SUIVI DES STOCK\Fichiers\Stats de Flux par circuit\2013\Semaine"
  ChDrive "G"
  ChDir CheminSrc
  
'Ouverture d'une boite de dialogue
CheminFichier = Application.GetOpenFilename

'S'il y a eu selection de fichier
  If CheminFichier <> False Then
    
    'J'ouvre le fichier
    Workbooks.Open Filename:=CheminFichier
    
    Dim wskChoisie As Workbook
    Dim wsksSuivi As Worksheet
    
    x = Split(CheminFichier, "\")
    y = UBound(x)
    
    Set wskChoisie = Workbooks(x(y))
    Set wsksSuivi = wskChoisie.Worksheets("Suivi priorités")
    'plus besoin Sheets("Suivi priorités").Activate
    'ActiveWorkbook.Sheets(1) = remplacer par wsksSuivi
    ' Remplacer [A] cela par ceci :
        ' Set A = Range(Cells(1 ,1), Cells(Cells(65536, 1).End(xlUp).Row, Cells(1, 256).End(xlToLeft).Column))
    ' soit:
    ' a la place de [A]
    ' ci dessous ceci
    ' wsksSuivi.Range(A.Address)
    ' qui est equivalent a la colonne A1 a A65536 (c'est la partie Objet)
    ' Equivalent a [A1:A65536]
      
     Set A = Range(Cells(3, 1), Cells(Cells(65536, 1).End(xlUp).Row, Cells(3, 256).End(xlToLeft).Column))
      wsksSuivi.Range(A.Address).EntireRow.Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]
    
    End If

laurent
 
Re : Signalement 424 Objet requis

Re

J'ai l'impression que cela insère la copie de la feuille complète. Je souhaite uniquement coller les valeurs de la colonne A sans tenir compte des lignes masquées.

Merci quand même pour ce bout de code qui reste fort intéressant
Cordialement


Bonjour,

en faite les deux classeur excel sont ouvert, donc il faut travailler en objet.
j'ai récupérer le nom du classeur (ou les informations sont stocké et la feuille)


laurent
 
Re : Signalement 424 Objet requis

Correction

VB:
Private Sub CommandButton1_Click()

'extractions mensuelles
Application.ScreenUpdating = False
'propose chemin d'accès au répertoire stats brutes galaxie
   CheminSrc = "G:\SUIVI DES STOCK\Fichiers\Stats de Flux par circuit\2013\Semaine"
  ChDrive "G"
  ChDir CheminSrc
   
'Ouverture d'une boite de dialogue
  CheminFichier = Application.GetOpenFilename

'S'il y a eu selection de fichier
  If CheminFichier <> False Then
     
'J'ouvre le fichier
    Workbooks.Open Filename:=CheminFichier
     
Dim wskChoisie As Workbook
Dim wsksSuivi As Worksheet
     
     x = Split(CheminFichier, "\")
     y = UBound(x)
     
Set wskChoisie = Workbooks(x(y))
Set wsksSuivi = wskChoisie.Worksheets("Suivi priorités")
      
Set A = Range(Cells(1, 1), Cells(Cells(65536, 1).End(xlUp).Row, 1))
wsksSuivi.Range(A.Address).EntireRow.Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]
End If
End Sub

laurent
 
Re : Signalement 424 Objet requis

Re

Salut Laurent

A tester:

Code:
......
Workbooks.Open Filename:=CheminFichier
    Sheets("Suivi priorités").Select
    Selection.AutoFilter
    ActiveSheet.Columns(1).Copy ThisWorkbook.Sheets("Priorités semaine écoulée").[A1]
.....
 
- 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
707
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
905
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
530
Réponses
3
Affichages
774
  • Question Question
Microsoft 365 Erreur de macro
Réponses
4
Affichages
796
Réponses
9
Affichages
960
Retour