Aide macro automatisation
Bonjour à tous,
j'ai un soucis je n'arrive pas à trouver comme faire pour automatiser une procédure dans excel.
Je dois copier la cellule a2 dans la cellule b1 et la cellule a3 dans la cellule c1........la cellule a5 dans la cellule b4 et la cellule a6 dans la cellule c4.... jusqu' à +/-4000 la cellule la modif ce fait de trois en trois comme dans l'exemple.
Quelqu'un a une idée?
Merci d'avance.
MaMour007
Salutmamour007 a écrit :Bonjour à tous,
j'ai un soucis je n'arrive pas à trouver comme faire pour automatiser une procédure dans excel.
Je dois copier la cellule a2 dans la cellule b1 et la cellule a3 dans la cellule c1........la cellule a5 dans la cellule b4 et la cellule a6 dans la cellule c4.... jusqu' à +/-4000 la cellule la modif ce fait de trois en trois comme dans l'exemple.
Quelqu'un a une idée?
Merci d'avance.
MaMour007
A2 / A3 => B1 / C1
A5 / A6 => B4 / C4
A8 / A9 => B7 / C 7 etc...
Si c'est bien ça ton problème :
Sub TEST()
Dim X As Long
For X = 2 To [A65536].End(xlUp).Row Step 3
Range("B" & X - 1) = Range("A" & X)
Range("C" & X - 1) = Range("A" & X + 1)
Next X
End SubSi tu as des questions sur le code, poses-les
A+
A+
Bonjour,
--> que veux tu dire exactement ?trois en trois comme dans l'exemple
A4 est copié en D1 ?
Si oui, utilise cette macro :
Sub reporter()
Dim cel As Range
Dim lig as Integer
Dim col As Byte, compteur as Byte
compteur = 1
lig = 1
col = 2
For Each cel In Range("A2", Range("a65536").End(xlUp))
Cells(lig, col) = cel.Value
col = col + 1
compteur = compteur + 1
If compteur > 3 Then
compteur = 1
lig = lig + 3
col = 2
End If
Next cel
End SubAmicalement
Dan
merci de vos reponses je vais essayer, entre temps j'ai enregistré une macro en mode relative qui fonctionne bien si ce n'est que je dois chaque fois me mettre sur la ligne a déplcaer mais je gagne déjà beaucoup de temps.
Merci
Gorfael a écrit :Salutmamour007 a écrit :Bonjour à tous,
j'ai un soucis je n'arrive pas à trouver comme faire pour automatiser une procédure dans excel.
Je dois copier la cellule a2 dans la cellule b1 et la cellule a3 dans la cellule c1........la cellule a5 dans la cellule b4 et la cellule a6 dans la cellule c4.... jusqu' à +/-4000 la cellule la modif ce fait de trois en trois comme dans l'exemple.
Quelqu'un a une idée?
Merci d'avance.
MaMour007
A2 / A3 => B1 / C1
A5 / A6 => B4 / C4
A8 / A9 => B7 / C 7 etc...
Si c'est bien ça ton problème :
Sub TEST() Dim X As Long For X = 2 To [A65536].End(xlUp).Row Step 3 Range("B" & X - 1) = Range("A" & X) Range("C" & X - 1) = Range("A" & X + 1) Next X End SubSi tu as des questions sur le code, poses-les
A+
A+
Merci cela fonctionne si ce n'est que j'aurais aimé que cela efface les cellules de départ ici ce n'est pas le cas, as-tu la solution?
Merci beaucoup en tout cas
Salutmamour007 a écrit :Gorfael a écrit :Salutmamour007 a écrit :Bonjour à tous,
j'ai un soucis je n'arrive pas à trouver comme faire pour automatiser une procédure dans excel.
Je dois copier la cellule a2 dans la cellule b1 et la cellule a3 dans la cellule c1........la cellule a5 dans la cellule b4 et la cellule a6 dans la cellule c4.... jusqu' à +/-4000 la cellule la modif ce fait de trois en trois comme dans l'exemple.
Quelqu'un a une idée?
Merci d'avance.
MaMour007
A2 / A3 => B1 / C1
A5 / A6 => B4 / C4
A8 / A9 => B7 / C 7 etc...
Si c'est bien ça ton problème :
Sub TEST() Dim X As Long For X = 2 To [A65536].End(xlUp).Row Step 3 Range("B" & X - 1) = Range("A" & X) Range("C" & X - 1) = Range("A" & X + 1) Next X End SubSi tu as des questions sur le code, poses-les
A+
A+
Merci cela fonctionne si ce n'est que j'aurais aimé que cela efface les cellules de départ ici ce n'est pas le cas, as-tu la solution?
Merci beaucoup en tout cas
Sub TEST()
Dim X As Long
For X = 2 To [A65536].End(xlUp).Row Step 3
Range("B" & X - 1) = Range("A" & X)
Range("C" & X - 1) = Range("A" & X + 1)
Range(Range("A" & X),Range("A" & X+1)).clearcontents
Next X
End Sub A+
JE SUIS EPATE!!!!!! MERCI BEAUCOUP!!!!!!!!!!!
Tu viens de m'aider un fameux coup!!!
En fait je ne comprends pas la formule ou pourrais je trouver le mode de fonctionnement de ce code? que je puisse le faire moi même?
Enorme merci!!
Salut mamour007 et le forum
En fait je ne comprends pas la formule ou pourrais je trouver le mode de fonctionnement de ce code? que je puisse le faire moi même?
Dim X As Long
'Comme X va gérer des lignes, il faut qu'il puisse dépasser les 32736 limite de Integer
For X = 2 To [A65536].End(xlUp).Row Step 3
[A65536].End(xlUp) = range("A65536").End(xlUp) :
Première cellule non-vide rencontrée en partant de la dernière ligne et en remontant dans la colonne A <=> dernière cellule non-vide de A
Pour X=2 jusqu'à la dernière ligne utilisée de la colonne A, par pas de 3 (2, 5, 8, etc...)
Range("B" & X - 1) = Range("A" & X)
B(x-1) = Ax
Range("C" & X - 1) = Range("A" & X + 1)
C(x-1) =A(x+1)
cellule colonne A, ligne X peut s'écrire (x étant une variable)
Range("A" & x) ou cells(x,1) ou cells(x,"A")
C35 : Range("C35") ou Cells(35,3) ou Cells(35,"C") ou [C35]
on aurait pu écrire :
Range("A" & X).offset(-1,1) = Range("A" & X)
Range("A" & X).offset(-1,2) = Range("A" & X).offset(1,0)
mais c'est moins compréhensible
Range(Range("A" & X),Range("A" & X+1)).clearcontents
effacer le contenu (clearcontents) de la plage [cellule Ax jusqu' à cellule A(x+1)]
Next X
X suivant
A+
Re,
Gorfael, elle parlait de +/-4000 la cellule raison pour laquelle j'avais mis
Dim lig as integer.
A bientôt
Dan