Macro excel - déplacement cellules

cholesmarrons

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin d'un coup de main concernant une bête macro, mais je n'y connais pas grand chose et je galère un peu :)

Je voudrais déplacer des cellues -> C9 en D8, C11 en D10, C13 en D12 et ainsi de suite sur plus de 500 cellules.

Une fois cette commande effectuée, j'aurai des lignes vides (1 sur 2).
Le top serait que les lignes vides après l'exécution de la macro soient automatiquement supprimées.

Merci d'avance !
 

Pièces jointes

  • exemple.xls
    16 KB · Affichages: 42
  • exemple.xls
    16 KB · Affichages: 42
  • exemple.xls
    16 KB · Affichages: 49
Dernière édition:

VDAVID

XLDnaute Impliqué
Re : Macro excel - déplacement cellules

Bonjour Cholesmarrons,

J'ai commencé à faire un bout de macro; mais ton fichier n'est pas découpé en colonnes. Toutes tes valeurs sont dans la colonne A, ( sans doute à cause de ton extraction excel depuis ta base de données ) ce qui rend la manipulation difficile ( Les C9 en D8 sont totalements subjectifs du coup ).
Peux-tu réimporter ton fichier en essayant de définir les colonnes par les TAB par exemples?
A+
 

VDAVID

XLDnaute Impliqué
Re : Macro excel - déplacement cellules

Re Cholesmarrons,
Je t'ai fait une macro qui déplace ce que tu veux où tu veux ! ^^
A tester sur un grande plage de valeur mais normalement ça marche. Les lignes vides sont également supprimées à la fin de la macro.
En espérant que cela te convienne :)
 

Pièces jointes

  • exemple(1).xls
    21.5 KB · Affichages: 64
  • exemple(1).xls
    21.5 KB · Affichages: 63
  • exemple(1).xls
    21.5 KB · Affichages: 58

VDAVID

XLDnaute Impliqué
Re : Macro excel - déplacement cellules

Re Cholesmarrons,
Je reviens vers toi pour une précision : j'ai fait la macro en fonction des infos de ton premier post, j'ai rajouter deux lignes de code pour que C13 bascule en D12 ( Ces trois lignes n'ont pas d'influence sur l'exemple ). Si tu veux juste que C9 bascule en D8 et C11 bascule en D10; enlève les deux lignes suivantes :

Range("D" & n).Value = Range("C" & o).Value
Range("C" & o).ClearContents

Si tu veux effectivement que C13 bascule en D12; modifie sur la ligne :

For i = 9 To 500 Step 3

Le "3" en "5" ce qui donne :

For i = 9 To 500 Step 5

Sinon la macro prendra Toutes les 3 Valeurs de i, alors que chacune de tes nouvelles valeurs arrive tous les 5 lignes.


(Si tu veux juste que C9 ==> D8 et C11 ==> D10, il n'y a pas lieu de modifier cette ligne mais juste supprimer les deux que je t'ai mentionné plus haut )

Voila désolé pour cette imprécision,
J'espère que tout ira bien :)
Bonne journée
 

cholesmarrons

XLDnaute Nouveau
Re : Macro excel - déplacement cellules

Merci beaucoup pour cette précision VDAVID.

Dernière chose si tu as le temps et la motivation ;)

Sur une ligne, j'ai plusieurs chaines de caractères avec des espaces entre chaque.

Comment faire en sorte que chaque groupe de caractère soit mis dans une colonne différente, sur la même ligne?

PS : exemple joint

Merci beaucoup
 

Pièces jointes

  • exemple ligne.xls
    14 KB · Affichages: 41

VDAVID

XLDnaute Impliqué
Re : Macro excel - déplacement cellules

Re Cholesmarrons,
J'ai essayé de trouver une astuce pour pouvoir replacer des morceaux de cellules dans d'autres mais pour définir les morceaux; je séche :( .

J'ai ce bout de macro pour éventuellement supprimer les espaces dans la cellule;

Range("C4").Value = Replace(Range("C4").Value, " ", "")

Mais c'est tout et ça n'avance pas à grand chose.
Je te conseilles de poster un nouveau sujet avec cette question précise tu auras plus de chances de recevoir une réponse :)
Désolé de ne pas pouvoir t'aider plus !
Bonne journée
 

cholesmarrons

XLDnaute Nouveau
Re : Macro excel - déplacement cellules

Salut!

Alors en fait VDAVID, sur une grande plage de cellules ça ne marche pas en fait.
J'ai essayé de modifier le step pour i et z mais sans succès.

Le bouclage doit poser problème, ça fonctionne sur 2 lignes mais pas sur plus.

Help ;)
 

VDAVID

XLDnaute Impliqué
Re : Macro excel - déplacement cellules

Bonjour Cholesmarrons,
J'ai repris le fichier que tu m'as envoyé et j'ai effectivement trouvé une erreur dans le Step
En fait soit tu prends ce code :

Code:
Sub déplacer()
Application.ScreenUpdating = False
Dim i&
For i = 9 To 500 Step 4
j = i - 1
x = i + 1
m = i + 2
n = i + 3
o = i + 4
Range("D" & j).Value = Range("C" & i).Value
Range("C" & i).ClearContents
Range("D" & x).Value = Range("C" & m).Value
Range("C" & m).ClearContents

Next

Dim z&
For z = 9 To 500 Step 1
If Range("C" & z).Value = "" Then
Range("C" & z).EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End Sub

Mais qui ne te déplaceras que les deux premières cellules C9 en D8 et C11 en D10

Soit ce code :

Code:
Sub déplacer()
Application.ScreenUpdating = False
Dim i&
For i = 9 To 500 Step 6
j = i - 1
x = i + 1
m = i + 2
n = i + 3
o = i + 4
Range("D" & j).Value = Range("C" & i).Value
Range("C" & i).ClearContents
Range("D" & x).Value = Range("C" & m).Value
Range("C" & m).ClearContents
Range("D" & n).Value = Range("C" & o).Value
Range("C" & o).ClearContents
Next

Dim z&
For z = 9 To 500 Step 1
If Range("C" & z).Value = "" Then
Range("C" & z).EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End Sub

Qui prendra jusque C13 en D12.

L'erreur venait du Step qui se fait toutes les 4 lignes et non pas toutes les 3 ^^'

Si tu fais varier le i ou le z, c'est juste le nombre de lignes à tester que tu fais varier.
J'ai re tester sur une grande plage de cellules c'est bon !
Si tu as un autre soucis n'hésite pas :)
Bonne journée
 

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz