Problème import de documents (copie/colle)
Bonjour,
Je suis actuellement entrain de créer un document pour le travail et je dois notamment y importer d'un autre document. Etant débutant sur excel j'ai donc bricoler quelques choses avec des tutos et ce que je trouvais sur internet. Néanmoins j'ai un problème que je n'arrive pas à régler.
J'ai deux documents :
L'un qui est un export avec deux pages l'une qui s'appelle "voyages" et l'autre "segments"
L'autre avec ma macro où je veux copié les données dans les onglets "VOYA" et "SEG"
La difficulté c'est que je veux alimenter toutes les semaines les pages "VOYA" et "SEG" avec les données actualisés de mes segments. J'avais réussis à bricoler quelques choses dont j'étais plutôt content ça fonctionnait jusqu'au moment ou je me suis rendus compte d'un problème. Le copie/colle devait me supprimer ma première ligne du doc source pour enlever l'entête et en faite ca me supprime la dernière ligne du doc de destination donc je perds une ligne à chaque fois.
Je pense que le problème apparaît au moment du copie des données et que je ne sélectionne pas les bonnes dimensions. Quelqu'un a t il des pistes de réflexions ?
Voilà le code :
Sub FINimport2()
'evite de voir les opérations intermédiaire sur les fichiers
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim ret As Integer
ret = MsgBox("Confirmez-vous l'importation des données de validation ?", vbYesNo)
If ret = vbNo Then
Exit Sub
Else
Dim chemin As String, fichier As String, titre As String
Dim wbk1 As Workbook, wbk2 As Workbook
Dim QuelFichier
Set wbk1 = ThisWorkbook
QuelFichier = Application.GetOpenFilename("Fichier Excel, *.xls;*.xlsx")
If QuelFichier = False Then Exit Sub
Set wbk2 = Workbooks.Open(QuelFichier)
'DIMENSION
Dim DerLigA As String
DerLigA = wbk1.Sheets("SEG").Range("A" & Rows.Count).End(xlUp).Row
Dim DerLigB As String
DerLigB = wbk2.Sheets("Segments").Range("A" & Rows.Count).End(xlUp).Row
'copie des données
wbk1.Sheets("SEG").Range("A" & (DerLigA) & ":CP" & (DerLigA + (DerLigB - 1)) & "").Value = wbk2.Sheets("Segments").Range("A1:CP" & DerLigB & "").Value
'DIMENSION
Dim DerLigC As String
DerLigC = wbk1.Sheets("VOYA").Range("A" & Rows.Count).End(xlUp).Row
Dim DerLigD As String
DerLigD = wbk2.Sheets("Voyages").Range("A" & Rows.Count).End(xlUp).Row
'copie des données
wbk1.Sheets("VOYA").Range("A" & (DerLigC) & ":CP" & (DerLigC + (DerLigD - 1)) & "").Value = wbk2.Sheets("Voyages").Range("A1:CP" & DerLigD & "").Value
wbk2.Close
MsgBox ("Données de validation intégrées !")
End If
End Sub "
Bonsoir username
sans fichier difficile , mais peut-être cela
wbk1.Sheets("SEG").Range("A" & (DerLigA) & ":CP" & (DerLigA + (DerLigB - 1)) & "").Value = wbk2.Sheets("Segments").Range("A2:CP" & DerLigB & "").ValueRange("A2:CP" & DerLigB & "").Value ...............A2 au lieu de A1 .............idem pour voyages
???
Bye
Bonjour,
Non malheureusement ça ne fonctionne pas.. ça supprime toujours la première ligne et ca met la dernière en N/A. Le document contient des données sensibles c'est pour ça que je ne le partage pas
Bonjour Username123
J'étais très occupée sur un projet complexe
Je reviens
Essaie ainsi :
Sub FINimport2()
'evite de voir les opérations intermédiaire sur les fichiers
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim ret As Integer
ret = MsgBox("Confirmez-vous l'importation des données de validation ?", vbYesNo)
If ret = vbNo Then
Exit Sub
Else
Dim chemin As String, fichier As String, titre As String
Dim wbk1 As Workbook, wbk2 As Workbook
Dim QuelFichier
Set wbk1 = ThisWorkbook
QuelFichier = Application.GetOpenFilename("Fichier Excel, *.xls;*.xlsx")
If QuelFichier = False Then Exit Sub
Set wbk2 = Workbooks.Open(QuelFichier)
'DIMENSION
Dim DerLigA As String
DerLigA = wbk1.Sheets("SEG").Range("A" & Rows.Count).End(xlUp).Row
Dim DerLigB As String
DerLigB = wbk2.Sheets("Segments").Range("A" & Rows.Count).End(xlUp).Row
'copie des données
wbk1.Sheets("SEG").Range("A" & (DerLigA + 1) & ":CP" & (DerLigA + (DerLigB - 1))).Value = wbk2.Sheets("Segments").Range("A2:CP" & DerLigB).Value
'DIMENSION
Dim DerLigC As String
DerLigC = wbk1.Sheets("VOYA").Range("A" & Rows.Count).End(xlUp).Row
Dim DerLigD As String
DerLigD = wbk2.Sheets("Voyages").Range("A" & Rows.Count).End(xlUp).Row
'copie des données
wbk1.Sheets("VOYA").Range("A" & (DerLigC + 1) & ":CP" & (DerLigC + (DerLigD - 1))).Value = wbk2.Sheets("Voyages").Range("A2:CP" & DerLigD).Value
wbk2.Close
MsgBox ("Données de validation intégrées !")
End If
End SubBon courage
J'espère que j'ai bien compris ton problème
Bonne fin de journée