Incrémentation suite

  • Initiateur de la discussion Jo
  • Date de début
J

Jo

Guest
Bonjour ! et merci pour vore écoute,

porcinet m'avait gentilment passé cette macro qui passe des données d'une feuille 1 à une feuille 2, elle fonctionne super merci ...

la voilà:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Sub test()
Dim i As Integer

For i = 5 To Sheets('feuil1').Range('B65536').End(xlUp).Row
With Sheets('feuil2')
.Range('B65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 2).Value
.Range('C65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 3).Value
.Range('D65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 4).Value
.Range('E65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 5).Value
.Range('F65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 6).Value
End With
Next i
End Sub
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

mais je me demande quelles lignes rajouter pour effacer les données de la feuille 1 une fois transmises sur la feuille 2

merci encore pour votre aide ! :kiss:
 

pierrejean

XLDnaute Barbatruc
bonsoir jo

je pense que porcinet ne m'en voudra pas de repondre à sa place


teste cela
Sub test()
Dim i As Integer

For i = 5 To Sheets('feuil1').Range('B65536').End(xlUp).Row
With Sheets('feuil2')
.Range('B65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 2).Value
.Range('C65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 3).Value
.Range('D65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 4).Value
.Range('E65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 5).Value
.Range('F65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 6).Value
End With
Sheets('feuil1').range(cells(i,2),cells(i,6)).clearcontents
Next i
End Sub
 
J

Jo

Guest
Mille excuses, j'ai dégainé trop vite, je rectifie en écrvant correctement ...
la macro part de la cellule b5 sur feuill 1 comment modifier pour partir en A1 ? je ne vois pas b5 cité dans la macro ?

encore merci .
 
J

Jo

Guest
En tout cas bravo, ta macro fonctionne parfaitement ! et merci !
il me reste juste à savoir comment paramétrer la macro pour d'autres cellules sur feuille 1 (j'ai un tableau avec beaucoup de valeurs et je veux récupérer en fait que c11/D11/E11/F11/ ET DE H1 à H10 . ! à renvoyer toujours sur feuill 2 sur une ligne .
 

pierrejean

XLDnaute Barbatruc
re bonsoir

pour partir en A1:

Sub test()
Dim i As Integer

For i = 1 To Sheets('feuil1').Range('A65536').End(xlUp).Row
With Sheets('feuil2')
.Range('B65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 1).Value
.Range('C65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 2).Value
.Range('D65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 3).Value
.Range('E65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 4).Value
.Range('F65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 5).Value
End With
Sheets('feuil1').range(cells(i,1),cells(i,5)).clearcontents
Next i

je n'ais pas modifié la zone d'arrivée (en feuille2) mais uniquement la zone d'origine en feuille 1
 
J

Jo

Guest
merci pour ta rapidité d'éxécution !!!

je comprends maintenant mieux ta programmation, on part d'une colonne A à partir de la cellule 1, donc comme je veux recupérer sur ma feuille 1 des données sur une ligne et sur une colonne sans prendre les autres valeurs, j'ai intérêt de faire une ligne cachée qui récupère ces données et d'appliquer ta macro, (comme je te disais j'ai des données à récupérer de c11 à f11 (ligne) et de h1 à h10 (colonne)ou il y a un autre moyen ?
 

pierrejean

XLDnaute Barbatruc
pour c11 etc

Sub copie()
'cells(ligne,colonne)
'copie au même endroit
For n = 1 To 4
Worksheets('Feuil2').Cells(11, 2 + n) = Worksheets('Feuil1').Cells(11, 2 + n)
Next n
For n = 1 To 10
Worksheets('Feuil2').Cells(n, 8) = Worksheets('Feuil1').Cells(n, 8)
Next n
End Sub
Sub copie1()
'cells(ligne,colonne)
'h1 à h10 copié sur la ligne 1 (c'est la colonne qui varie)
For n = 1 To 4
Worksheets('Feuil2').Cells(11, 2 + n) = Worksheets('Feuil1').Cells(11, 2 + n)
Next n
For n = 1 To 10
Worksheets('Feuil2').Cells(n, 8) = Worksheets('Feuil1').Cells(1, n)
Next n
End Sub

cela t'aidera à comprendre la designation par cells(ligne,colonne)
 
J

Jo

Guest
Merci pour ta grande collaboration !

pour terminer, je voudrais (si possible ) rajouter une simple commande (en cas d'erreur) qui me supprime la dernière ligne incrémenté sur mon tableau pour pouvoir recommencer, (j'ai une collecte de E à O sur feuil 2)

avec cette macro actuelle qui récupère les données d'une simple ligne de feuil 1

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Sub test()
Dim i As Integer

For i = 5 To Sheets('feuil1').Range('B65536').End(xlUp).Row
With Sheets('feuil2')
.Range('E65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 2).Value
.Range('F65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 3).Value
.Range('G65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 4).Value
.Range('H65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 5).Value
.Range('I65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 6).Value
.Range('J65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 7).Value
.Range('K65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 8).Value
.Range('L65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 9).Value
.Range('M65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 10).Value
.Range('N65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 11).Value
.Range('o65536').End(xlUp).Offset(1, 0).Value = Sheets('feuil1').Cells(i, 12).Value


End With
Next i
End Sub
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

donc en ajoutant un autre bouton et une autre macro !

encore un grand bravo et merci !
 

Discussions similaires

Réponses
0
Affichages
157
Réponses
11
Affichages
304

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 534
dernier inscrit
Kalamymustapha