XL 2013 importation données d'un fichier fermé

michel-nac

XLDnaute Nouveau
Bonjour à tous,

je chercher à faire l'importation des données de Feuil1 du classeur Balance vers la feuille RECAP de la feuille Plan à partir de la ligne 2, tout en respectant la trame de la feuille RECAP c'est à dire les bordures du tableau

Merci d'avance
 

Pièces jointes

  • Plan.xlsx
    9.8 KB · Affichages: 20
  • Balance.xlsx
    9.1 KB · Affichages: 21

job75

XLDnaute Barbatruc
Bonjour michel-nac, bienvenue sur XLD,

Téléchargez les fichiers joints en les laissant dans le même répertoire.

Le fichier Plan.xlsx récupère les valeurs du fichier Balance.xlsx grâce à des formules de liaison.

Les valeurs zéro ne sont pas affichées.

Les bordures du tableau sont appliquées par 5 MFC séparées.

A+
 

Pièces jointes

  • Fichiers.zip
    25.9 KB · Affichages: 23

job75

XLDnaute Barbatruc
Re,
oui je préfère utiliser le VBA et je n'ai pas de préfère au fait quant à l'ouverture du fichier.
La macro du bouton :
Code:
Sub Importer()
Dim F As Worksheet
Set F = ThisWorkbook.Sheets("RECAP")
Application.ScreenUpdating = False
F.Rows("2:" & F.Rows.Count).Delete 'RAZ
On Error Resume Next
With Workbooks.Open(ThisWorkbook.Path & "\Balance.xlsx").Sheets(1) 'adaptable
    With .[A1].CurrentRegion
        F.[A1].Resize(.Rows.Count, .Columns.Count) = .Value 'copie les valeurs
    End With
    .Parent.Close False
End With
'---bordures---
With F.[A1].CurrentRegion
    .Borders.Weight = xlThin
    .Offset(1).Resize(.Rows.Count - 1).Borders(xlInsideHorizontal).Weight = xlHairline
End With
End Sub
Fichiers joints à télécharger dans le même répertoire (le bureau).

A+
 

Pièces jointes

  • Plan - VBA(1).xlsm
    22.5 KB · Affichages: 17
  • Balance.xlsx
    14.5 KB · Affichages: 20

michel-nac

XLDnaute Nouveau
Bonjour Job75,

je m'excuse de vous déranger une autre fois au sujet de ma problématique.
est ce qu'il y'a possibilité d'ajuster le code pour qu'il n'importe que les données dont le code de la colonne B du classeur Balance commence avec la lettre D.
autrement dit il ne faut pas importer les lignes dont le code de la colonne B commence avec une autre lettre.
(parce qu'il se peut que la colonne B contienne d'autres codes alors que ce qui m’intéresse sont juste ceux qui commencent avec D)

Merci d'avance
 

job75

XLDnaute Barbatruc
Bonjour michel-nac, le forum,

La meilleure solution (la plus rapide) est d'utiliser un tableau VBA pour filtrer :
Code:
Option Compare Text 'facultatif, la casse est ignorée

Sub Importer()
Dim F As Worksheet, tablo, ncol, i&, n&, j%
Set F = ThisWorkbook.Sheets("RECAP")
Application.ScreenUpdating = False
F.Rows("2:" & F.Rows.Count).Delete 'RAZ
On Error Resume Next
With Workbooks.Open(ThisWorkbook.Path & "\Balance.xlsx").Sheets(1) 'adaptable
    tablo = .[A1].CurrentRegion 'matrice, plus rapide
    ncol = UBound(tablo, 2)
    n = 1
    For i = 2 To UBound(tablo)
        If tablo(i, 2) Like "D*" Then
            n = n + 1
            For j = 1 To ncol
                tablo(n, j) = tablo(i, j)
            Next
        End If
    Next
    .Parent.Close False
End With
'---restitution---
F.[A1].Resize(n, ncol) = tablo
'---bordures---
With F.[A1].CurrentRegion
    .Borders.Weight = xlThin
    .Offset(1).Resize(.Rows.Count - 1).Borders(xlInsideHorizontal).Weight = xlHairline
End With
End Sub
Fichier (2), j'ai mis des "X" en colonne B du fichier Balance.xlsx.

A+
 

Pièces jointes

  • Plan - VBA(2).xlsm
    23 KB · Affichages: 21
  • Balance.xlsx
    15.3 KB · Affichages: 18

job75

XLDnaute Barbatruc
Bonjour michel-nac,

Avec ce code les lignes avec valeur zéro, vide ou texte en colonne E ne sont pas copiées :
Code:
        If tablo(i, 2) Like "D*" And Val(Replace(tablo(i, 5), ",", ".")) <> 0 Then
Fichier (3).

A+
 

Pièces jointes

  • Plan - VBA(3).xlsm
    23.4 KB · Affichages: 18
  • Balance.xlsx
    15.4 KB · Affichages: 16

Discussions similaires

Statistiques des forums

Discussions
311 721
Messages
2 081 927
Membres
101 842
dernier inscrit
seb0390