1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

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

Discussion dans 'Forum Excel' démarrée par michel-nac, 10 Octobre 2018.

  1. michel-nac

    michel-nac XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2018
    Messages :
    23
    "J'aime" reçus :
    0
    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
      Taille du fichier:
      9.8 Ko
      Affichages:
      14
    • Balance.xlsx
      Taille du fichier:
      9.1 Ko
      Affichages:
      11
  2. Chargement...

    Discussions similaires - importation données fichier Forum Date
    XL 2010 Rendre possible l'importation de fichiers excel pour alimenter une base de données Forum Excel 29 Juillet 2016
    Importation de données depuis 2 fichiers Notepad Forum Excel 16 Octobre 2015
    Importation de données depuis un fichier fermé Forum Excel 12 Décembre 2014
    [RESOLU] Importation de données XML automatique a l'ouverture du fichier excel Forum Excel 8 Décembre 2014
    importation de données de fichiers excel Forum Excel 29 Août 2014

  3. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    25774
    "J'aime" reçus :
    2193
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    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:

    michel-nac aime votre message.
  4. michel-nac

    michel-nac XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2018
    Messages :
    23
    "J'aime" reçus :
    0
    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
     
  5. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    25774
    "J'aime" reçus :
    2193
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Re,
    Bien sûr que c'est possible, mais si l'on veut ne pas ouvrir le fichier il faut utiliser en VBA les formules de liaison.

    Donc le VBA est inutile.

    A+
     
  6. michel-nac

    michel-nac XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2018
    Messages :
    23
    "J'aime" reçus :
    0
    Re-Bonsoir Job75,
    oui je préfère utiliser le VBA et je n'ai pas de préfère au fait quant à l'ouverture du fichier.

    Merci
     
  7. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    25774
    "J'aime" reçus :
    2193
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Re,
    La macro du bouton :
    Code (Text):
    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:

    zebanx et michel-nac aiment cela.
  8. michel-nac

    michel-nac XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2018
    Messages :
    23
    "J'aime" reçus :
    0
    je vous remercie beaucoup Job75
    c'est parfait
     
  9. michel-nac

    michel-nac XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2018
    Messages :
    23
    "J'aime" reçus :
    0
    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
     
  10. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    25774
    "J'aime" reçus :
    2193
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour michel-nac, le forum,

    La meilleure solution (la plus rapide) est d'utiliser un tableau VBA pour filtrer :
    Code (Text):
    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:

    michel-nac et zebanx aiment cela.
  11. michel-nac

    michel-nac XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2018
    Messages :
    23
    "J'aime" reçus :
    0
    Bonjour Job75,
    je vous remercie beaucoup pour la modification
    le code fonctionne comme il faut maintenant

    Merci encore
     
  12. michel-nac

    michel-nac XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2018
    Messages :
    23
    "J'aime" reçus :
    0
    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
     
  13. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    25774
    "J'aime" reçus :
    2193
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour michel-nac,

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

    A+
     

    Pièces jointes:

    michel-nac et zebanx aiment cela.
  14. michel-nac

    michel-nac XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2018
    Messages :
    23
    "J'aime" reçus :
    0
    Bonjour Job75,
    je vous remercie infiniment,
    cela fonctionne très bien

    Amicalement
     

Partager cette page