copier/coller avec msgbox

Demanda

XLDnaute Nouveau
Bonjour à tous,

J'ai sur mon fichier excel une colonne ("B") contenant les numéros des semaines. De la colonne C à la colonne H, j'ai un ensemble d'informations que je souhaiterais copier/coller à intervalles réguliers (toutes semaines, toutes les 3 semaines, etc.) jusqu'à la dernière semaine de l'année (normalement semaine 52)
J'ai donc créé une msgbox me donnant numéro de la semaine à partir duquel je souhaite effectuer le copier/coller et une autre à partir duquel je définis l'intervalle de temps (si par exemple, je veux commencer mes opérations semaine 49 et que je souhaite les répéter toutes les deux semaines, je rentre 48 dans la première textbox, 2 dans la deuxième. Ca m'affiche alors dans la colonne B les valeurs 48, 50, 52 et ça me copie la plage allant de C1 : H1 trois fois.
Merci d'avance de vos réponses

Voici le code que j'ai mis en place jusqu'à présent:
Dim val As Integer
Dim nbevoulu As Long
Dim comptcell As Long
Dim plage, destination As Range
Set plage = Range("C1:H1")
Set destination = Range("C2")
val = Int(InputBox("valeur départ?"))
nbevoulu = Int(InputBox("combien cellule?"))
frequence = Int(InputBox("intervalle?"))
For comptcell = 1 To nbevoulu
ActiveCell.Offset(comptcell - 1, 0) = val + comptcell - frequence
plage.Copy destination
Next comptcell
 

kjin

XLDnaute Barbatruc
Re : copier/coller avec msgbox

Bonjour,
Si j'ai bien compris
Code:
Sub copie()
Dim plage As Range, semdep As Integer, nbsem As Integer, freq As Integer
Set plage = Range("C1:H1")
semdep = Int(InputBox("Semaine de départ?"))
nbsem = Int(InputBox("combien de semaine"))
freq = Int(InputBox("intervalle?"))
For i = semdep + 1 To semdep + (nbsem * freq) Step freq
    plage.Copy
    Range("C" & i & ":H" & i).PasteSpecial Paste:=xlAll
Next
Application.CutCopyMode = False

End Sub
A+
kjin
 

Pièces jointes

  • Demanda.xls
    26 KB · Affichages: 58

Demanda

XLDnaute Nouveau
Re : copier/coller avec msgbox

Merci beaucoup pour cette réponse. Cela dit, ce n'est pas tout à fait ça que je voulais. En fait, je ne veux pas que la colonne des semaines soit créée initialement et je voudrais que la boucle s'arrête lorsque la semaine est égale à 52. Ci joint, un fichier excel avec plus d'explications (feuille 2)
 

Pièces jointes

  • Demanda.zip
    11.9 KB · Affichages: 30

kjin

XLDnaute Barbatruc
Re : copier/coller avec msgbox

Re,
Alors peut-être comme ça
Code:
Sub copie()
Dim plage As Range, semdep As String, nbsem As String, intv As String
Dim L As Long, NoSem As Byte
Set plage = Range("C1:H1")
semdep = InputBox("Semaine de départ ?")
If semdep = "" Then Exit Sub
nbsem = InputBox("combien de semaine ?")
If nbsem = "" Then Exit Sub
intv = InputBox("intervalle ?")
If intv = "" Then Exit Sub
For i = 1 To Int(nbsem)
    L = Range("B65000").End(xlUp).Row + 1
    NoSem = Int(semdep + (intv * i) - intv)
    If NoSem > 52 Then Exit For
    plage.Copy
    Range("C" & L & ":H" & L).PasteSpecial Paste:=xlAll
    Range("B" & L) = NoSem
Next
Application.CutCopyMode = False

End Sub
A+
kjin
 

Pièces jointes

  • Demanda_v2.xls
    36.5 KB · Affichages: 68
Dernière édition: