XL 2013 VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

Caro60

XLDnaute Nouveau
Bonjour à tous,

Depuis le début de la semaine (qui à commencée Mardi :D ) , j'essaye de créer un fichier de base de données (clients / devis / factures).
Lorsqu'il a fallu créer les formules, pas de problème :cool: .... quand il faut enregistrer une macro, ça passe, mais dès qu'il faut commencer à l'écrire ... :( je suis paumée !

voici ma question ?

Je souhaite copier des cellules issues de ma fiche client vers un tableau archive client via le bouton "sauvegarder", et que ce tableau s'incrémente à chaque fois.
(donnée en feuil 1, cellule A1, A6, B1, B3 .... vers feuil 2 ligne 2 par exemple)
Ainsi, lorsqu'on réinitialise la fiche client, les données ne sont pas perdues.

Y aurait-il une âme charitable pour résoudre mon énigme ?
(et vu qu'un fichier vaut mieux qu'un long discourt, je vous le joint, ça sera plus parlant)
(... en faite, je ne peux pas, il est trop lourd :(:(:( )
 

Caro60

XLDnaute Nouveau
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

j'ai réduit la taille du fichier,

ça sera tout de même plus simple avec :)
 

Pièces jointes

  • Base de données test.xlsm
    147.4 KB · Affichages: 36
  • Base de données test.xlsm
    147.4 KB · Affichages: 29

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

Bonjour Caro, bonjour le forum

Peut-être avec ce code à adapter à ton cas :


Code:
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OC As Worksheet 'déclare la variable OC (Onglet Cible)
Dim PS As Range 'déclare la variable PS (Plage Source)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim I As Byte 'déclare la variable I (Incrément)

Set OS = Sheets("Feuil1") 'définit l'onglet source OS
Set OC = Sheets("Feuil2") 'définit l'onglet cible OC
Set PS = Application.Union(OS.Range("A1"), OS.Range("A6"), OS.Range("B3"), OS.Range("B6")) 'définit la plage PS
'définit la cellule de destination DEST (A1, si A1 est vide, sinon la première cellule vide de la colonne 1 (=A)
Set DEST = IIf(oa.Range("A1") = "", OC.Range("A1"), OC.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
For Each CEL In PS 'boucle sur toutes les cellules CEL de la plage PS
    DEST.Offset(0, I).Value = CEL.Value 'renvoie la valeur de la cellule CEL dans la cellule DEST déclalée de I colonnes à droite
    I = I + 1 'incrément I
Next CEL 'prochaine cellule de la boucle
End Sub


[Édition]
Nos posts se sont croisés...
 

Caro60

XLDnaute Nouveau
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

Bonjour Robert,

Tout d'abord, merci pour ta rapidité !! :cool:;) et pour toutes les explications présentes dans ton code !:D
J'ai essayé d'appliquer le code ... mais j'ai une "erreur 424" :confused:
 

Pièces jointes

  • Base de données test.xlsm
    147.4 KB · Affichages: 41
  • Base de données test.xlsm
    147.4 KB · Affichages: 42

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

Bonjour Caro, bonjour le forum,

Renvoie ton fichier avec le code que je t'ai proposé (adapté à ton cas). Dis-moi où se trouve le code et je pourrais peut-être trouver le problème !...
 

Caro60

XLDnaute Nouveau
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

Bonjour Caro, bonjour le forum,

Renvoie ton fichier avec le code que je t'ai proposé (adapté à ton cas). Dis-moi où se trouve le code et je pourrais peut-être trouver le problème !...


J'ai renvoyé le fichier dans le post précédent et en effet, je n'ai pas dit où était la macro !! :eek: désolé...
Elle est dans l'onglet "fiche new Client", bouton "sauvegarder" . Et voilà, ma petite étourderie est réparée ;)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

Re,

Non désolé mais j'ai passé tout le code et rien. Je ne trouve pas le code que je t'ai proposé adapté... Je pense que tu n'as pas dû mettre le bon fichier. Télécharge-le et tu verras...
 

Caro60

XLDnaute Nouveau
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

C'est parce qu'on est le 1er Avril :rolleyes: ! ... bon j'avoue, je me suis trompée de fichier.
Voici le bon.
Merci beaucoup pour ton aide.
 

Pièces jointes

  • Base de données test.xlsm
    151.6 KB · Affichages: 41
  • Base de données test.xlsm
    151.6 KB · Affichages: 36

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

Re,

Bien vu pour le poisson d'avril...
Le code modifié (tu avais écrit oa à la place de OC) et comme il s'agit d'un tableau, j'ai modifié la cellule de destination DEST.

Code:
Sub Rectangleàcoinsarrondis4_Cliquer()

Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OC As Worksheet 'déclare la variable OC (Onglet Cible)
Dim PS As Range 'déclare la variable PS (Plage Source)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim I As Byte 'déclare la variable I (Incrément)

Set OS = Sheets("Fiche new Client") 'définit l'onglet source OS
Set OC = Sheets("Base de données Clients") 'définit l'onglet cible OC
Set PS = Application.Union(OS.Range("D9"), OS.Range("F9"), OS.Range("B9"), OS.Range("D7"), OS.Range("D13"), OS.Range("F13"), OS.Range("D15"), OS.Range("D17"), OS.Range("D19"), OS.Range("D22"), OS.Range("B27")) 'définit la plage PS
'définit la cellule de destination DEST (A1, si A1 est vide, sinon la première cellule vide de la colonne 1 (=A)
Set DEST = OC.Range("A1").End(xlDown).Offset(1, 0)
For Each CEL In PS 'boucle sur toutes les cellules CEL de la plage PS
    DEST.Offset(0, I).Value = CEL.Value 'renvoie la valeur de la cellule CEL dans la cellule DEST déclalée de I colonnes à droite
    I = I + 1 'incrément I
Next CEL 'prochaine cellule de la boucle
End Sub
 

Caro60

XLDnaute Nouveau
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

En effet, il n'y a plus d'erreur, mais ... rien ne se passe. Mes données ne s'enregistrent pas dans la seconde feuille :confused::confused::confused::confused:

Pourrais tu encore m'aider ?? s'il te plait :eek:
 

Pièces jointes

  • Base de données test.xlsm
    152 KB · Affichages: 41
  • Base de données test.xlsm
    152 KB · Affichages: 27

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA copier des cellules dans un tableau en l'incrémentant à chaque fois

Bonsoir,

Tu n'as pas bien lu mon post précédent !... Je te disais que j'avais modifié deux choses. Il te faut donc remplacer l'ancien code par ce dernier. Les données étaient bien copiées mais à la fin du tableau (il te faudra d'ailleurs les effacer). Avec la nouvelle méthode de définition de la cellule de destination DEST, les données sont renvoyées au bon endroit. À moins que tu insistes à ne pas copier le bon code...
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 900
Membres
101 834
dernier inscrit
Jeremy06510