Importer des onglets dans un autre onglet

Bonjour à tous!

Je débute en VBA et je suis certain que ma question va vous sembler facile à résoudre. Je vous joins le fichier comme exemple si vous pouvez m'aider:

Je souhaiterais importer les 3 premières colonnes de l'onglet "A" dans l'onglet "Feuille d'import" puis importer les 3 première colonnes de l'onglet B à la suite des lignes précédemment importées sans les écrasées dans le même onglet "Feuille d'import".

Merci!

bonne soirée

Bonjour,

Voici un essai où le premier import commence en ligne 2 :

Sub LancerImport()
Import sheets("A"), sheets("Feuille d'import")
Import sheets("B"), sheets("Feuille d'import")
end sub

Sub Import(wsSrc as worksheet, wsDest as worksheet, optional Nbcol as byte = 3)
with wsSrc
    dl = .cells(.rows.count, 1).end(xlup).row
    t = .cells(1, 1).resize(dl, Nbcol).value
end with
with wsDest
    nvl = .cells(.rows.count, 1).end(xlup).row + 1
    .cells(nvl, 1).resize(ubound(t), ubound(t, 2)).value = t
end with
end sub

Cdlt,

Merci! Cela fonctionne très bien et c'est exactement ce que je cherchais à faire :p

Néanmoins il y a encore une subtilité à laquelle je n'avais pas pensé, c'est que chacun de mes onglets comporte les mêmes titres de colonne sur chaque onglet. Ce code importe donc la première ligne autant de fois qu'il y a d'onglet. Comment puis l'importer qu'une fois? Ou bien ne jamais importer la première ligne?

Merci et bonne soirée

cordialement

Bonjour,

Voici un nouvel essai :

Sub LancerImport()
Import sheets("A"), sheets("Feuille d'import")
Import sheets("B"), sheets("Feuille d'import")
end sub

Sub Import(wsSrc as worksheet, wsDest as worksheet, optional Nbcol as byte = 3)
with wsDest 'avec feuille de destination
    nvl = .cells(.rows.count, 1).end(xlup).row + 1 'determination de la premiere cellule vide (ou plus precisement de la premiere ligne vide en partant du bas + 1)
    with wsSrc 'avec feuille source
        dl = .cells(.rows.count, 1).end(xlup).row 'derniere ligne vide
        with .cells(1, 1) 'avec cellule en ligne 1 colonne 1
            'si nvl = 2 (cad si dest est vierge), nvl = 1 et on prend les dl lignes (avec entetes) et les nbcol (= 3) colonnes
            'sinon, on décale d'une ligne et on prend les dl - 1 lignes
            if nvl = 2 then nvl = 1: t = .resize(dl, Nbcol) else t = .offset(1, 0).resize(dl - 1, Nbcol)
        end with
    end with
    .cells(nvl, 1).resize(ubound(t), ubound(t, 2)) = t 'on colle les valeurs à la ligne nvl de la destination
end with
end sub

Cdlt,

Je dois avouer que je ne comprends pas le code et donc je ne comprends pas pourquoi ça ne fonctionne pas. Le message "Erreur de compilation: Sub ou fonction non définie" apparait ainsi que cette capture d'ecran:

image

Merci pour cette aide précieuse en tout cas

Bonne soirée

cyrille

Je viens de modifier le code, sur lequel il manquait un point.

J'en ai également profité pour ajouter des commentaires pour la compréhension. Je peux développer davantage si besoin.

Bonne soirée,

merci énormément, le code marche à la perfection! :)

a bientot!

Super, j'en suis ravi !

Bonne continuation !

Rechercher des sujets similaires à "importer onglets onglet"