Importation de colonnes d'un classeur excel vers un autre

sophia anie

XLDnaute Nouveau
Bonjour a tous,

Je me permets de revenir vers vous afin de pouvoir debuger mon code.
Le but étant de pouvoir importer des colonnes d'un classeur vers une autre en commençant par la ligne 3 afin d’éviter les titre en cellule fusionnée


Voici donc les parties que je n'arrive pas a remplir :


Sub Import()

Application.ScreenUpdating = False

Dim Fichier1 As String, Fichier2 As String
Fichier1 = ActiveWorkbook.Name

'ouvre la fenêtre de sélection du fichier à copier

OuvrirFich = Application.Dialogs(xlDialogOpen).Show("D:\x.xls")
If OuvrirFich <> False Then

Fichier2 = ActiveWorkbook.Name
'Copier les colonnes à partir de B3, C3 , D3 , E3 de la Feuil1 si sur la colonne A la cellule contient le mot par exemple "techno"

Sheets("onglet 1").Range(" ?????????").Select
Selection.Copy

'Coller les données sur le classeur contenant la macro en Feuil1 position B2
Workbooks(Fichier1).Activate
Sheets("1").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'Femeture du fichier copié
Workbooks(Fichier2).Close

Application.ScreenUpdating = True

End If

End Sub


Encore merci pour votre aide

Cordialement
 

Pierrot93

XLDnaute Barbatruc
Re : Importation de colonnes d'un classeur excel vers un autre

Bonjour,

remplace peut être ceci :
Code:
Sheets("onglet 1").Range(" ?????????").Select
Selection.Copy

par cela :
Code:
With Sheets("onglet 1")
    .Range("B3:E" & .Range("B65536").End(xlUp).Row).Copy
End With

où la dernière ligne à copier est déterminée par la présence de la dernière cellule renseignée de la colonne B

bon après midi
@+
 

sophia anie

XLDnaute Nouveau
Re : Importation de colonnes d'un classeur excel vers un autre

Merci pierrot pour ce retour rapide;

par rapport au code ci dessous, mes colonnes se sont pas forcement les une à la suite des autres exemple B D X Y, comment, je pourrais donc faire pour les choisir en modificant cette selection "B3:E"

cdt
 

sophia anie

XLDnaute Nouveau
Re : Importation de colonnes d'un classeur excel vers un autre

donc je précise , il faudrait donc pouvoir faire un choix sélective sur les colonne avec la condition également sur la colonne A :
'Copier les colonnes à partir de B3, C3 , D3 , E3 de la Feuil1 si sur la colonne A la cellule contient le mot par exemple "techno"

Pourrait tu me fournir un exemple de boucle pour que je puisse l'adapter a mon prog, je suis un peu novice :)

cdt
 

sophia anie

XLDnaute Nouveau
Re : Importation de colonnes d'un classeur excel vers un autre

Bonjour,

voici les deux fichier d'exemple

cdt
 

Pièces jointes

  • A.xlsx
    8.5 KB · Affichages: 26
  • B.xlsx
    12.5 KB · Affichages: 30
  • A.xlsx
    8.5 KB · Affichages: 24
  • B.xlsx
    12.5 KB · Affichages: 31
  • A.xlsx
    8.5 KB · Affichages: 32
  • B.xlsx
    12.5 KB · Affichages: 27

Pierrot93

XLDnaute Barbatruc
Re : Importation de colonnes d'un classeur excel vers un autre

Re,

et les données, je les mets où ? dans un autre onglet ou dans le classeur A ?? il faut copier la cellule avec le format ou juste les valeurs ??? manque un peu d'explication tout ca....

bon après midi
@+
 

sophia anie

XLDnaute Nouveau
Re : Importation de colonnes d'un classeur excel vers un autre

Re,

les données sont a mettre dans le classeur A et la copie des cellules se fait avec leurs valeurs ou format je pense que sa revient au même et en fonction de la condition cité dans le fichier B.

:)
 

Pierrot93

XLDnaute Barbatruc
Re : Importation de colonnes d'un classeur excel vers un autre

Re,

les données sont a mettre dans le classeur A et la copie des cellules se fait avec leurs valeurs ou format je pense que sa revient au même

bah... pas vraiment dans le code....

code ci-dessous avec une copie de valeur, avec ce que j'ai compris de ta problèmatique.... à adapter en fonction de ton projet....


Code:
Option Explicit
Sub test()
Dim c As Range, p As String
With Workbooks("B.xlsx").Sheets("1")
    With .Range("A1", .Range("A65536").End(xlUp))
        Set c = .Find("joy", , xlValues, xlWhole, , , False)
        If Not c Is Nothing Then
            p = c.Address
            Do
                With Workbooks("A.xlsx").Sheets("1")
                    .Range("B65536").End(xlUp)(2).Value = c.Offset(0, 5)
                    .Range("C65536").End(xlUp)(2).Value = c.Offset(0, 7)
                    .Range("D65536").End(xlUp)(2).Value = c.Offset(0, 3)
                    .Range("E65536").End(xlUp)(2).Value = c.Offset(0, 1)
                End With
                Set c = .FindNext(c)
            Loop While c.Address <> p
        End If
    End With
End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 311
Membres
102 860
dernier inscrit
fredo67