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

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:



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
    24.4 KB · Affichages: 9
Re bonjour,

Autre question, autre fil de discussion... telle est la règle🙂

Mais à propos de celui-ci, vous ne dites pas si vous avez pu intégrer et comprendre les propositions.

Cordialement
 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…