Microsoft 365 Coller les données dans la premiere ligne vide Répondre

Saloumakh

XLDnaute Nouveau
Bonjour tout le monde,

je vient vers vous pour solliciter votre aide pour alimenter une base de données à partir d'une liste des réclamations.

J'ai essayé de commencer mon code mais puisque je suis encore débutante en VBA, je suis bloquée sur :

- Le fait de coller les données que j'importe à chaque fois dans la premiere ligne vide et non pas ecraser à chaque fois les données qui sont déja sur le document.

je joint mon code à ce message.

je vous remercie par avance pour votre aide 🥰😊

VB:
Sub Recupererdata()

    'Déclaration des variables
    Dim ListeFichier As Variant
    Dim MonClasseur As Workbook
   
    'On désactive le presse papier et le rafraichissement de l'écran
   
    Application.CutCopyMode = False
    Application.ScreenUpdating = False
   
   
    'On récupére le fichier des données à copier
    ListeFichier = Application.GetOpenFilename(Title:="Sélectionner votre liste des DCs ", _
                   filefilter:="Fichiers Excel(*.xls*),*xls*", ButtonText:="Cliquez")
    'Prévoir le cas du bouton Annuler
    If ListeFichier <> False Then
        'On affecte le fichier sélectionné
        Set MonClasseur = Application.Workbooks.Open(ListeFichier)
        'On copie les données de la feuille 1 du classeur séléctionné
        MonClasseur.Sheets(1).Range("A1").CurrentRegion.Copy
       
       
        'On colle les données dans la premiére ligne vide
        ThisWorkbook.ActiveSheet.Range("A" & Rows.Count).End(xlUp).PasteSpecial xlPasteValues
       
     
        'On désactive les messages d'alerte de Microsoft
        Application.DisplayAlerts = False
        'On ferme le classeur source
        MonClasseur.Close
    End If
   
       'On réactive le presse papier et le rafraichissement de l'écran
    Application.CutCopyMode = True
    Application.ScreenUpdating = True
   

End Sub
 

Saloumakh

XLDnaute Nouveau
Bonjour Saloumakh,
Pour le collage essayez :
VB:
'On colle les données dans la premiére ligne vide
With ThisWorkbook.ActiveSheet
    DerLig = 1 + .Range("A65500").End(xlUp).Row
    .Cells(DerLig, 1).PasteSpecial xlPasteValues
End With
Je vous remercie tout d'abord pour votre réponse , mais le probléme maintenant c'est que quand j'importe les données ça s'ajoutent sur la ligne suivante (ligne 3 puisque le remplissage a commencé depuis la ligne 2 et puis ça remplie la ligne 4 et ainsi de suite) qu'est déja remplie en fait, et non pas sur la ligne vide.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Vérifiez les données copiées.
Dans la PJ j'ai suis resté près de votre code ( les données à copiées sont en feuille 2 ) et ce que je vous ai donné fonctionne correctement. sinon donnez nous des fichiers tests. En aveugle, on ne peut que supputé.
Testez.
 

Pièces jointes

  • Classeur4.xlsm
    17.5 KB · Affichages: 20

Saloumakh

XLDnaute Nouveau
En fait, je voulais pas importer des informations depuis la feuille 2

Ce que je voulais réaliser dans mon programme c'est :
Lui demander d'aller récupérer un fichier spécifique ( excel ) ( contient réguliérement 32 colonnes et des miliers de lignes ça dépend de chaque fichier) et d'importer les données (toujours dans la feuille 1) de ce dernier qu'on a sélectionné et de les copier dans notre classeur et à chaque fois que j'importe un fichier à mon classeur , les informations déja dedans doivent pas étre effacer , au contraire, ça doit étre une suite ( ce qui veut dire dans la premiére ligne vide qu'il a trouve)

PS: j'ai un probleme pour joindre un fichier avec mon message
Merci à vous
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Evidemment j'avais compris.
Mais c'était juste un ex, que les données arrive d'ici ou de là, c'est pareil.
Ce que je voulais vous montrer c'est que le code de collage que je vous ai donné marche.
D'où, si vous l'avez lu, mon :
Vérifiez les données copiées.
car si le collage marche, c'est le copie qui est défaillant.
 

Saloumakh

XLDnaute Nouveau
Bonjour,

Excusez moi pour le retard, je joins à ce message mon fichier.
j'ai pas pu trouvé l'erreur en fait ...
Est ce que vous pouvez m'aider pour trouver la solution.
Je vous remercie d'avance
 

Pièces jointes

  • Prototype.xlsm
    17.8 KB · Affichages: 6

Saloumakh

XLDnaute Nouveau
Oui effectivement, j'ai essayé et ça fonctionne! Merciiiiiii
Le petit souci que j'ai encore,c'est que la base de donnée que j'importe, est collé sans avoir conserver la mise en forme ( police, bordure, couleur....) qu'est ce que je vais modifier pour que je garde exactement la méme mise en forme svp ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Essayez de remplacer :
VB:
        'On colle les données dans la premiére ligne vide
        ThisWorkbook.ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
par :
Code:
'On colle les données dans la premiére ligne vide
With ThisWorkbook.ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
        .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
        .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False
End With
 

Saloumakh

XLDnaute Nouveau
il m'affiche ça en fait
Capture d’écran 2021-04-01 135244.png
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Essayez cette PJ. Je pense que l'erreur vient du fait que vous revenez pas sur le fichier initial pour coller.
J'ai utilisé le fichier EssaiCopie pour le test. essayez de faire de même dans un premier temps.
 

Pièces jointes

  • Prototype (2).xlsm
    21.2 KB · Affichages: 12
  • EssaiCopie.xlsx
    7.6 KB · Affichages: 10

Discussions similaires

Statistiques des forums

Discussions
312 172
Messages
2 085 936
Membres
103 051
dernier inscrit
briyan75