Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

michel-nac

XLDnaute Nouveau
Bonsoir Job75,
je vous remercie tout d'abord pour la célérité de votre réponse si limpide.
ce ne serait pas possible de faire tout cela avec un code en le liant à un bouton sans passer par les formules ?

Merci d'avance
 

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

michel-nac

XLDnaute Nouveau
Bonsoir Job75,

je ne sais pas si je peux me permettre de solliciter votre aide pour une modification dans le code en rajoutant une condition dans le code ?
ne pas importer aussi les données dont la valeur de la colonne E égale à ZERO

Merci d'avance
 

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

Réponses
7
Affichages
327
Réponses
7
Affichages
424
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…