Macro : Fonction Décaler vers la droite

  • Initiateur de la discussion Initiateur de la discussion tfk782
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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 😛
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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
130
Réponses
5
Affichages
472
Réponses
7
Affichages
163
  • Question Question
Microsoft 365 Bug sur une macro
Réponses
6
Affichages
347
Réponses
3
Affichages
491
Retour