Import de données entre deux classeurs

Bonjour à tous,

N'étant pas très fort en VBA, j'ai voulu ecrire un code permettant d'importer plusieurs sélections précises de données d'un autre classeur (Ce dernier est choisi via une boite de dialogue).

Après des recherches, j'ai rédigé un code qui fonctionne très bien mais à chaque sélection de données qu'il copie, une boite de dialogue apparait pour m'indiquer quelle zone, le programme cible. Or je voudrais que celles-ci n'apparaissent plus et qu'il copie automatiquement.

Jusqu'à maintenant, je n'ai toujours pas réussi...

Je ne sais pas si j'ai été assez précis.

Je vous remercie d'avance

Voici le code en question:

Sub import_anomalie()

Dim destination, source As Workbook
Dim rang_source, rang_destination As Range
Dim fin_ouvrage, fin_code, fin_longueur, fin_adresse, fin_comm, fin_numero, fin_jour As Long
fin_ouvrage = Range("A1048576").End(xlUp).Row + 1
fin_adresse = Range("G1048576").End(xlUp).Row + 1
fin_comm = Range("H1048576").End(xlUp).Row + 1

fin_code = Range("O1048576").End(xlUp).Row + 1
fin_longueur = Range("K1048576").End(xlUp).Row + 1

Set destination = ActiveWorkbook
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.AllowMultiSelect = False
.Show
        If .SelectedItems.Count > 0 Then
            Workbooks.Open .SelectedItems(1)
            Set source = ActiveWorkbook
            Set rang_source = Application.InputBox(prompt:="select source range", Title:="Sélection des données", Default:="A7:A10000", Type:=8)
            destination.Activate
            Set rang_destination = Range("A" & fin_ouvrage)
            rang_source.Copy rang_destination
            rang_destination.CurrentRegion.EntireColumn.AutoFit
            End If
            If .SelectedItems.Count > 0 Then
            Workbooks.Open .SelectedItems(1)
            Set source = ActiveWorkbook
            Set rang_source = Application.InputBox(prompt:="select source range", Title:="Sélection des données", Default:="$C$7:$C$10000", Type:=8)
            destination.Activate
            Set rang_destination = Range("K" & fin_longueur)
            rang_source.Copy rang_destination
            rang_destination.CurrentRegion.EntireColumn.AutoFit
            End If
            If .SelectedItems.Count > 0 Then
            Workbooks.Open .SelectedItems(1)
            Set source = ActiveWorkbook
            Set rang_source = Application.InputBox(prompt:="select source range", Title:="Sélection des données", Default:="F7:H10000", Type:=8)
            destination.Activate
            Set rang_destination = Range("M" & fin_code)
            rang_source.Copy rang_destination
            rang_destination.CurrentRegion.EntireColumn.AutoFit
            [A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
            End If

            If .SelectedItems.Count > 0 Then
            Workbooks.Open .SelectedItems(1)
            Set source = ActiveWorkbook
            Set rang_source = Application.InputBox(prompt:="select source range", Title:="Sélection des données", Default:="B1", Type:=8)
            destination.Activate
            Set rang_destination = Range("H" & fin_adresse)
            rang_source.Copy rang_destination
            rang_destination.CurrentRegion.EntireColumn.AutoFit

            Workbooks.Open .SelectedItems(1)
            Set source = ActiveWorkbook
            Set rang_source = Application.InputBox(prompt:="select source range", Title:="Sélection des données", Default:="B4", Type:=8)
            destination.Activate
            Set rang_destination = Range("B" & fin_adresse)
            rang_source.Copy rang_destination
            rang_destination.CurrentRegion.EntireColumn.AutoFit

            Workbooks.Open .SelectedItems(1)
            Set source = ActiveWorkbook
            Set rang_source = Application.InputBox(prompt:="select source range", Title:="Sélection des données", Default:="B3", Type:=8)
            destination.Activate
            Set rang_destination = Range("C" & fin_adresse)
            rang_source.Copy rang_destination
            rang_destination.CurrentRegion.EntireColumn.AutoFit

            Workbooks.Open .SelectedItems(1)
            Set source = ActiveWorkbook
            Set rang_source = Application.InputBox(prompt:="select source range", Title:="Sélection des données", Default:="B2", Type:=8)
            destination.Activate
            Set rang_destination = Range("G" & fin_adresse)
            rang_source.Copy rang_destination
            rang_destination.CurrentRegion.EntireColumn.AutoFit

              source.Close False
End If

End With

MsgBox ("Import de données terminé.")

End Sub

Salut et bienvenue sur le Forum,

Un code sans fichier, c'est "Pas de réponse" garanti à 93 %

Même un fichier sans code - mais avec des explications précises, faisant référence aux objets Excel - c'est encore mieux

Cordialement.

Rechercher des sujets similaires à "import donnees entre deux classeurs"