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

Microsoft 365 Code VBA

jebibo

XLDnaute Occasionnel
Bonjour à tous,


J'ai un problème avec un code VBA et je ne trouve pas mon erreur, je vous explique mon cas.
J'ai deux fichiers dans un répertoire :
  • Fichier_1 (Onglet Data_1)
  • Fichier_2 (Onglet Data_2)
Je saisi des données dans la cellule B2, du Fichier_1 et le code doit coller la valeur dans Fichier_2. Jusqu'ici, le code fonctionne.

Maintenant, je dois sélectionner une plage de données en B7:I14
et coller les valeurs dans Fichier_2. Lorsque j'enregistre à nouveau, les données doivent s'enregistrer à la suite dans Fichier_2, mais je n'y arrive pas.

Note : J'ai essayé de remplacer Range("B2").Value par ("B7:I14").Select, mais cela indique une erreur dans le fichier.
Merci pour vos précieux conseille à l'avance.


Voici mon code de départ :

Sub Macro2()
'
' Macro2 Macro
'

Dim monfichier As String
monfichier = ThisWorkbook.Name

Dim information As String
information = Sheets("Data-1").Range("B2").Value
Dim fichier_destination As String
fichier_destination = "Fichier_2.xlsm"

Dim chemin As String
chemin = ThisWorkbook.Path & "\" & fichier_destination

Workbooks.Open chemin

Dim L As Long
L = Sheets("Data-2").Range("B1048576").End(xlUp).Row + 1

Sheets("Data-2").Range("B" & L).Value = information

Workbooks(fichier_destination).Close savechanges:=True

Workbooks(monfichier).Activate

MsgBox " Info Transmise"

End Sub
 

Staple1600

XLDnaute Barbatruc
Bonjour @jebibo , le fil

Essaie avec ces modifs
VB:
Sub Macro2()
Dim monfichier As String, information As String
Dim fichier_destination As String, chemin As String
Dim wDesti As Workbook, L As Long
monfichier = ThisWorkbook.Name
information = ThisWorkbook.Sheets("Data-1").Range("B2").Value2
fichier_destination = "Fichier_02.xlsm"
chemin = ThisWorkbook.Path & "\" & fichier_destination
Set wDesti = Workbooks.Open(chemin)
L = wDesti.Sheets("Data-2").Range("B1048576").End(xlUp).Row + 1
wDesti.Sheets("Data-2").Range("B" & L).Value = information
wDesti.Close savechanges:=True
Workbooks(monfichier).Activate
MsgBox " Info Transmise"
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Et en version un peu plus courte
Code:
Sub Macro2_bis()
Dim information As String
information = ThisWorkbook.Sheets("Data-1").Range("B2").Value2
Application.ScreenUpdating = False
    With Workbooks.Open(ThisWorkbook.Path & "\Fichier_02.xlsm")
        .Sheets("Data-2").Range("B1048576").End(xlUp)(2) = information
        .Close savechanges:=True
    End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

@jebibo
Avec cette version, je récupère bien la plage B2:I14
Code:
Sub Macro2_ter()
Dim information, p As Range
information = ThisWorkbook.Sheets("Data-1").Range("B2:I14").Value
Application.ScreenUpdating = False
    With Workbooks.Open(ThisWorkbook.Path & "\Fichier_02.xlsm")
        Set p = .Sheets("Data-2").Range("B1048576").End(xlUp)(2)
        p.Resize(UBound(information, 1), UBound(information, 2)) = information
        .Close savechanges:=True
    End With
End Sub
 

jebibo

XLDnaute Occasionnel
Re-Bonjour Staple 1600
Mon fichier (Fichier_2 était mal renommer toute fonctionne, parfaitement.
Encore une fois merci pour votre aide.
Passer une belle journée!
 

jebibo

XLDnaute Occasionnel
Bonjour Staple 1600
j'ai un autre détail a de demander, la plage de donne (B2:I14) est variable comment peut-on Integer le code a celui que tu m'as proposé aujourd'hui pour sélectionné seulement la plage de la cellule B2 jusqu'à la dernière cellule en colonne i

encore une fois merci pour ton aide
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, @jebibo

C'était ma foi, pas bien compliqué...
(tu avais déjà la syntaxe qui va bien dans ton code d'origine)
Il suffisait de s'en inspirer
Enrichi (BBcode):
Sub Macro2_quatro()
Dim information, p As Range, L As Long
L = ThisWorkbook.Sheets("Data-1").Cells(Rows.Count, "I").End(xlUp).Row
information = Range("B2:I" & L).Value
Application.ScreenUpdating = False
    With Workbooks.Open(ThisWorkbook.Path & "\Fichier_02.xlsm")
        Set p = .Sheets("Data-2").Range("B1048576").End(xlUp)(2)
        p.Resize(UBound(information, 1), UBound(information, 2)) = information
        .Close savechanges:=True
    End With
End Sub

NB: test OK sur mon PC
 

Discussions similaires

Réponses
5
Affichages
324
Réponses
12
Affichages
845
Réponses
7
Affichages
591
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…