XL 2019 BDD d'un fichier A vers fichier B

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

  • erreur code 1004.png
    erreur code 1004.png
    65.9 KB · Affichages: 6
  • Products catalogue NRO.xlsm
    48.5 KB · Affichages: 3
  • LISTE_PLAN_Z.xlsx
    9.1 KB · Affichages: 1

Hasco

XLDnaute Barbatruc
Repose en paix
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:

PETIT YANNICK

XLDnaute Occasionnel
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: 4

PETIT YANNICK

XLDnaute Occasionnel
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
 

Discussions similaires

Statistiques des forums

Discussions
312 749
Messages
2 091 643
Membres
105 010
dernier inscrit
sam333