Macro : Fonction Décaler vers la droite

tfk782

XLDnaute Nouveau
Bjr à toutes et tous,

J'ai réellement besoin de votre aide. Je vais essayer d'être le plus clair possible et je vais vous joindre un fichier d'accompagnement.

Je souhaiterai déplacer une plage de cellules sur une ligne vers la droite jusqu'à ce qu elle rencontre une autre cellule avec du contenu.

j ai une colonne A d un tableau excel qui contient des valeurs pour chaque ligne.
Les colonnes de "B" jusqu'à "I" sont parfois vides parfois pleine.
La colonne "K" est toujours pleines

exemple
pour la ligne 1 j ai une valeur en A1 B1 C1 D1
pour la ligne 2 j ai une valeur en A2 B2
pour la ligne 3 j'ai une valeur en A3 B3 C3 D3 E3 F3 G3
pour la ligne 4 j'ai une valeur en A4

je voudrais que la macro déplace les plages de cellules pleines jusqu'à ce qu'elle rencontre la colonne "K" qui est toujours pleine.
c'est à dire :
Plage "A1-D1" en "G1-J1"
Plage "A2-B2" en "I2-J2"
Plage "A3-G3" en "D3-J3"
Cellule "A4" en "J4"

et qu'elle puisse faire ca en boucle pour chaque ligne ligne de ma colonne A (16 lignes)
Au fait c est un peu comme si je voulais aligner a droite mes cellules !

Je vous joins un fichier qui j'espère sera explicite.
Merci par avance de votre aide précieuse
 

Pièces jointes

  • Macro pour décaler.xlsx
    10.5 KB · Affichages: 31

job75

XLDnaute Barbatruc
Re : Macro : Fonction Décaler vers la droite

Bonjour tfk782,

Macro lancée par le bouton :

Code:
Sub Décaler()
Dim lig&, col%
For lig = 4 To [K4].End(xlDown).Row
  For col = 10 To 1 Step -1
    If Cells(lig, col).Interior.ColorIndex <> xlNone Then
      Cells(lig, 1).Resize(, col).Copy Cells(lig, 11 - col)
      Cells(lig, 1).Resize(, 10 - col).Interior.ColorIndex = xlNone
      Exit For
    End If
  Next
Next
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Décaler(1).xls
    48.5 KB · Affichages: 33
  • Décaler(1).xls
    48.5 KB · Affichages: 36
  • Décaler(1).xls
    48.5 KB · Affichages: 34

job75

XLDnaute Barbatruc
Re : Macro : Fonction Décaler vers la droite

Re,

J'ai ajouté un test dans cette version (2).

A+
 

Pièces jointes

  • Décaler(2).xls
    48.5 KB · Affichages: 30
  • Décaler(2).xls
    48.5 KB · Affichages: 31
  • Décaler(2).xls
    48.5 KB · Affichages: 28

Modeste

XLDnaute Barbatruc
Re : Macro : Fonction Décaler vers la droite

Bonjour tfk782,
Salut job :)

J'ai pris en considération les explications, plutôt que "l'exemple coloré" et donc des infos telles que:
j ai une colonne A d un tableau excel qui contient des valeurs pour chaque ligne

... Il y en aura bien un des deux qui ne sera pas trop éloigné de la situation réelle :p
Je songeais donc à quelque chose comme:
VB:
Sub deplacer()
With Sheets("Feuil2")
For lig = 4 To .[K50000].End(xlUp).Row
    nbrVal = Application.CountA(.Range(.Cells(lig, 1), .Cells(lig, 10)))
    .Cells(lig, 1).Resize(1, nbrVal).Cut .Cells(lig, 1).Offset(0, 10 - nbrVal)
Next lig
End With
End Sub
 

job75

XLDnaute Barbatruc
Re : Macro : Fonction Décaler vers la droite

Bonjour tfk782, Modeste, le forum,

Si l'on veut rechercher la 1ère cellule non vide :

Code:
Sub Décaler()
Dim lig&, col%
For lig = 4 To [K4].End(xlDown).Row
  For col = 10 To 1 Step -1
    If Not IsEmpty(Cells(lig, col)) Then
      Cells(lig, 1).Resize(, col).Cut Cells(lig, 11 - col)
      If col < 10 Then _
        Cells(lig, 1).Resize(, 10 - col).Borders.Weight = xlThin
      Exit For
    End If
  Next
Next
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Décaler(3).xls
    60.5 KB · Affichages: 38
  • Décaler(3).xls
    60.5 KB · Affichages: 36
  • Décaler(3).xls
    60.5 KB · Affichages: 36

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 170
Membres
102 805
dernier inscrit
emes