Intégrer une plage de données dans un autre Excel fermé

Bonjour à tous,

Je suis dans une impasse...

J'ai un fichier A contenant la feuille "6.4- RC".

Celle-ci contient une plage de données (F10:F364) que je souhaite copier-coller dans un fichier B (nommé "Base de données") dans la Feuil1 avec une incrémentation de valeurs dans la première colonne vide (à partir de la colonne J).

Voici mon code :

Sub Bouton1_Cliquer()

Dim Chemin As String

Chemin = "C:\Users\f.c\Desktop\Base de données\Base de données.xlsx"

'Sheets("6.4- RC").Range("F10:F364").Copy

With Workbooks.Open(Chemin) '

.Feuil1.Range("J" & .Feuil1.Range("J" & Rows.Columns).End(xlUp).Columns + 1).PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

.Close savechanges:=True

End With

End Sub

Cependant, à partir de la ligne ".Feuil1.Range......", un message d'erreur d'execution : 7 apparaît.

Précisant que ce message d'erreur est "Mémoire insuffisante".

Je pense que le problème provient de ma plage de données ("F10:F364") qui est elle-même issue de formule. Excel doit peut-être copier les formules au lieu des valeurs uniquement. De plus, il peut y avoir du texte dans cette plage de données.

Help les amis, je suis complètement bloqué...

Avez-vous une idée svp ?

Merci d'avance

Flo

Bonjour,

A priori, ton souci est là :

.Feuil1.Range("J" & .Feuil1.Range("J" & Rows.Columns).End(xlUp).Columns + 1).PasteSpecial Paste:=xlPasteValues

Peux-tu préciser ou tu veux copier ta plage ?

Cdlt.

Bonjour Jean-Eric,

Merci de ton aide.

Effectivement, le souci est bien là.

Je souhaite copier ma plage dans la Feuil1 d'un fichier Excel initialement fermé (qui se nomme Base de données).

Sachant qu'il faut que ce soit une incrémentation (sous forme de colonne) à partir de ma colonne J.

N'hésites pas si tu as besoin.

PS : Je ne peux malheureusement pas te faire parvenir le fichier, il y a des éléments confidentiels...

Up svp 😊

Bonjour,

Joins un fichier exemple car je ne sais toujours pas ou tu veux copier ta plage !...

Cdlt.

Jean - Eric,

J'ai fais mon maximum pour te joindre des fichiers exemples.

Pour récapituler :

  • Fichier "Base de données" fermé et stocké dans un répertoire sécurisé (tout le temps à la meme adresse d'ou ma variable "Chemin" dans mon code).
  • Fichier "RC 86" ouvert et étant le seul interface de l'opérateur. Ce fichier doit contenir un bouton de commande "Envoi vers base de données"

Le besoin de la macro est (dans le fichier "RC 86") :

  • Sélectionner et stocker le contenu de la cellule E5 (il s'agira d'un nombre)
  • Sélectionner et stocker le contenu de la plage (F10:F364) (Il peut y avoir nombre, texte et cellule vide -> Tout copier)

Dans le fichier "Base de données" (qui est fermé) :

  • Ouvrir le fichier "Base de données"
  • Rechercher la première colonne vide à partir de la colonne J (il ne faudra pas écraser les données existantes)
  • Coller le contenu de la cellule E5 du fichier "RC 86" dans la ligne 4 de la première colonne vide trouvé (exemple ici en J4)
  • Coller le contenu de la plage (F10:F364) du fichier "RC 86" à partir de la ligne 5 de la première colonne vide trouvé (exemple ici à partir de J5).
  • Enregistrer automatiquement les modifications du fichier "Base de données"
  • Fermer le fichier "Base de données"
  • Afficher un message, si tout s'est bien passé, "Migration effectuéé".

Tu as le début de mon code dans le Module 2 de mon fichier "RC 86".

En espérant que cela sera plus clair...

Merci de ton aide.

9rc-86.xlsm (570.79 Ko)

Bonjour,

essaie ainsi :

Sub Bouton1_Cliquer()
Dim wb As Workbook
Dim lastCol As Long
Dim Cell As Range, Rng As Range
Const FILE As String = "C:\Users\xhejn.qelemeni\Desktop\Base de donn?es\Base de donn?es.xlsx"
Const RW As Long = 4

    With ActiveWorkbook.Worksheets("6.4- RC")
        Set Cell = .Cells(5, 5)
        Set Rng = .Range("F10:F364")
    End With

    Set wb = Workbooks.Open(FILE)

    With ActiveWorkbook
        With .Worksheets(1)
            lastCol = WorksheetFunction.Max(10, .Cells(RW, .Columns.Count).End(xlToLeft).Column)
            .Cells(RW, lastCol + 1).Value = Cell.Value2
            .Cells(RW + 1, lastCol + 1).Resize(Rng.Rows.Count).Value = Rng.Value
        End With
        .Close savechanges:=True
    End With

End Sub

Parfait !

Ca tourne tout seul.

Merci à toi Jean-Eric !

Bonne journée,

Rechercher des sujets similaires à "integrer plage donnees ferme"