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

mamour007 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

Salut

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 Sub

Si tu as des questions sur le code, poses-les

A+

A+

Bonjour,

trois en trois comme dans l'exemple

--> que veux tu dire exactement ?

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 Sub

Amicalement

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 :
mamour007 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

Salut

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 Sub

Si 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

mamour007 a écrit :
Gorfael a écrit :
mamour007 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

Salut

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 Sub

Si 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

Salut
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

Rechercher des sujets similaires à "aide macro automatisation"