XL 2019 BDD d'un fichier A vers fichier B

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 !

PETIT YANNICK

XLDnaute Occasionnel
Bonjour,

Je cherche a faire une base de données du fichier LISTE_PLAN_Z.xlsx 'Feuil1' a partir du fichier Products catalogue NRO 'feuil1'
A chaque fois que je clic sur le bouton commande 5 :
Je souhaite incrémenter la valeur dans la colonne F du fichier LISTE_PLAN_Z.xlsx 'Feuil1' et récupérer des données dans le fichier Products catalogue NRO 'feuil1'
J'ai le message d'erreur 1004.
Quelqu'un aurait une idée du probleme est comment codé cela?

Merci d'avance
 

Pièces jointes

Bonjour,

Certainement à cause de Workbooks("Liste_Plan_Z") il faut l'extension : Workbooks("Liste_Plan_Z.xlsx") ou de la ligne qui est mal calculée.

Mais j'écrirai l'ensemble plutôt comme ci-dessous.
ATTENTION : J'ai remplacer le chemin par ThisWorkbook.Path pour test
J'ai supposé que les valeurs rapatriées dans Liste_Plan_Z sont celles du classeur qui contient la macro, c'est pourquoi j'ai rajouté = ThisWorkBook.Sheets....

Quand vous ouvrez un classeur, celui-ci devient le classeur actif donc Sheets ou WorkSheets sont par défaut des objets du classeurs actif.

N'oubliez pas de fermer votre classeur en fin de macro sinon plantage au prochain appel.

VB:
Sub CommandButton5_Click()
    With Workbooks.Open(Filename:=ThisWorkbook.Path & "\LISTE_PLAN_Z.xlsx")
        ligne =.Worksheets("Feuil1").Range("F" & Rows.Count).End(xlUp).Row + 1
        With .Worksheets("Feuil1")
            .Range("A" & ligne).Value = ThisWorkbook.Sheets("Feuil1").Range("I21").Value
            .Range("E" & ligne).Value = ThisWorkbook.Sheets("Feuil1").Range("H21").Value
        End With
    End With
End Sub

Avec une fonction qui teste si le fichier est ouvert et l'ouvre éventuellement cela pourrait donné ceci:
VB:
Sub CommandButton5V2_Click()

    With OuvrirClasseur("Liste_Plan_Z.xlsx", ThisWorkbook.Path)
        ligne = .Worksheets("Feuil1").Range("F" & Rows.Count).End(xlUp).Row + 1
        With .Worksheets("Feuil1")
            .Range("A" & ligne).Value = ThisWorkbook.Sheets("Feuil1").Range("I21").Value
            .Range("E" & ligne).Value = ThisWorkbook.Sheets("Feuil1").Range("H21").Value
        End With
    End With

End Sub



'
' Fonction renvoyant un classeur dont le nom est passé en paramètre
' S'il n'est pas ouvert, la fonction tentera de l'ouvrir à partir
' du répertoire donné
'
Function OuvrirClasseur(ByVal NomClasseur As String, Optional ByVal Répertoire As String) As Workbook
    On Error GoTo FIN
    '
    ' Prendre le répertoire de ce classeur par défaut
    If Répertoire = "" Then Répertoire = ThisWorkbook.Path
    '
    ' Rajouter éventuellement l'anti-slash de fin
    If Right(Répertoire, 1) <> Application.PathSeparator Then Répertoire = Répertoire & Application.PathSeparator
    '
    ' Obtention du classeur
    Set OuvrirClasseur = Workbooks(NomClasseur)
    If OuvrirClasseur Is Nothing Then Set OuvrirClasseur = Workbooks.Open(Répertoire & NomClasseur)
FIN:
   On Error GoTo 0
End Function

Cordialement
 
Dernière édition:
Sub CommandButton5_Click() With Workbooks.Open(Filename:=ThisWorkbook.Path & "\LISTE_PLAN_Z.xlsx") ligne =.Worksheets("Feuil1").Range("F" & Rows.Count).End(xlUp).Row + 1 With .Worksheets("Feuil1") .Range("A" & ligne).Value = ThisWorkbook.Sheets("Feuil1").Range("I21").Value .Range("E" & ligne).Value = ThisWorkbook.Sheets("Feuil1").Range("H21").Value End With End With End Sub



Merci pour votre retour rapide.

Je souhaite mettre une valeur incrémentale sur la nouvelle ligne dans la colonne F ( la valeur cellule F précédent + 1)
Comment dois je procéder?
 

Pièces jointes

  • 2019_09_07_15_53_03_Window.png
    2019_09_07_15_53_03_Window.png
    24.4 KB · Affichages: 9
Oui j'ai intégrer votre code
.Range("A" & ligne).Value = ThisWorkbook.Sheets("Feuil1").Range("I21").Value
.Range("E" & ligne).Value = ThisWorkbook.Sheets("Feuil1").Range("H21").Value

il fonctionne bien pour l'intégration de valeur colonne A et E

par contre en colonne F je cherche a mettre une valeur sur la nouvelle ligne créé .
Cette valeur est égale a la valeur de la ligne du dessus +1
 
- 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

Retour