Copie d'une plage de données d'un onglet sur un autre

Bonjour,

J'ai un petit souci que je ne comprends pas.

Je veux copier des données de l'onglet "SAISIE" vers l'onglet "BASEDEDONNEES". Ces infos doivent se coller les unes au dessous des autres.

Je reçois le message suivant : "L'indice n'appartient pas à la sélection"

La macro se nomme "copier-coller"

Si quelqu'un peut m'aider à comprendre.

Merci d'avance

Xavier

Bonjour,

Cette erreur survient généralement quand un une référence nommée n'est pas reconnue dans une collection. Il s'agit souvent d'un nom de feuille qui n'existe pas.

Cdlt,

Bonjour Carpe Diem, bonjour le forum,

Tu peux spécifier un onglet de 3 manière différente : son index (sa place de gauche à droite), son nom (propriété Name qui est indiqué dans l'onglet en bas) ou son nom de code CodeName = la première propriété (Name).

Tu définis la variable :

Set ws_export = wk_file.Worksheets(29)

soit le 29eme onglet du classeur et ton classeur n'en contient que 4. Donc bug...

Soit : Set ws_export = wk_file.Worksheets(2) / Index
Soit : Set ws_export = wk_file.Worksheets("BASEDEDONNEES") / Name
Soit : Set ws_export = FEUIL29 / CodeName (wk_file devant génère une erreur ?!... mais je n'utilise jamais cette manière)

[Édition]

Bonjoue 3GB, nos posts se sont croisés...

Salut Thauthème,

Je viens d'écrire la même chose à l'instant, mais sur un autre sujet, c'est marrant !

Re,

Désolé de polluer Carpe Diem mais, 3GB, sais-tu pourquoi avec le CodeName : Set ws_export = wk_file.Feuil29 génère une erreur alors que Set ws_export = Feuil29 n'en génère pas ?

Merci à vous deux, je ne l'avais pas vu.

Pouvez vous me dire comment faire pour que la recherche ne se fasse qu'a partir de la ligne 17.

Merci d’avance

Cordialement.

Re,

For i = 17 To lstrw 

peut-être...

Oui j'ai déjà essayé avec 16 et 17 et je n'ai pas le bon résultat.

en fait j'ai un peu avancé en faisant cela :

'identifier l'intitulé à trouver
intitule_a_trouver = ws_data.Cells(16, j)
intitule_trouve = False

Mais du coup il me prend l'intitulé et il ne me recopie plus la ligne :-)

Je me prends bien la tête

Re,

Peut être pourrais-tu nous fournir un nouveau fichier exemple avec un onglet résultat où tu indiquerais (manuellement) les résultats attendus...

Hello ThauThème

Voici le fichier avec les explications dans l'onglet.

J'avoue que je ne comprends plus et je commence à ne plus rien voir :-)

Encore une fois merci de ton aide

La macro se nome CopierColler

Re à tous,

@Thauthème : Question très intéressante et utile ! Après vérification, il semble que Feuil29 (enfin une feuille ciblée par son codename) soit un objet membre du VBAProject et non du workbook. C'est un point à approfondir !

Bonsoir le fil, bonsoir le forum,

@3GB : merci pour cette précision !

@ Carte Diem : une proposition :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Saisie)
Dim OB As Worksheet 'déclare la variable OB (Onglet Basededonnees)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PLV As Integer 'déclare la variable PLV (Première Ligne Vide))

Set OS = Worksheets("SAISIE") 'définit l'onglet OS
Set OB = Worksheets("BASEDEDONNEES") ''définit l'onglet OB
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet OS
'définit la première ligne vide PLV de la colonne A de l'onglet OB
PLV = OB.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1
'copie les lignes 17 à DL de l'onglet OS et les colle dans la cellule ligne PLV, colonne A de l'onglet OB?
OS.Rows(17 & ":" & DL).Copy OB.Cells(PLV, "A")
OS.Rows(17 & ":" & DL).Delete 'supprime les lignes 17 à DL de l'onglet OS
End Sub

@ThauThème

Merci ça fonctionne, il me reste deux détails à régler.

Il ne faut pas que le champ prix de l'onglet saisie se retrouve dans l'onglet BASEDEDONNEES et il faut que j'insére en auto la date du jour.

Je vais bosser dessus et si je trouve je t'envoie la macro finalisée.

J'ai rajouté la macro dans le fichier joint.

Merci de ton aide.

@GB

@Thauthème : Question très intéressante et utile ! Après vérification, il semble que Feuil29 (enfin une feuille ciblée par son codename) soit un objet membre du VBAProject et non du workbook. C'est un point à approfondir !

Bonjour,

En fait j'avais mis feuille 29 car c'etait le numéro de feuille indiquée, mais je ne sais pas pourquoi ce'st de numéro qui ressortiat.

Bonjour Carpe Diem,

Feuil29, c'était bien le codename de la feuille. Cela signifie a priori qu'il y a eu 29 feuilles au cours du projet, bien que le classeur n'en contienne plus que 4.

Cdlt,

Bonjour BGB,

Effectivement c'est un fichier que je suis en train de retravailler, et du coup à l'origine il y avait plus d'onglet.

Cordialement.

Rechercher des sujets similaires à "copie plage donnees onglet"