Cherche macro pour déplacer petit bloc de cellules

Bonjour à toutes et a tous,

Je cherche une petit macro pour déplacer un petit bloc de cellules de 3 colonnes sur 8 lignes max pour le déplacer 3 colonne vers la droite.

Comme je ne sais pas si je me suis bien expliqué j'ai mis un petit fichier exemple.

Merci de vôtre aide

28exemple.zip (4.12 Ko)

Bonjour,

un peu vague comme demande ....

tu ne dis pas sur quels critère on se base pour le déplacement (pas la couleur je suppose )

le n° de ligne ? l'âge du capitaine ?

combien de ligne fait le bloc , 3 colonnes , ça c'est renseigné.

ps: chaque colonne DOIT avoir un titre !

P.

Bonjour toutes et tous

ok, je supprime le fichier -;)

cordialement,

André

Merci André13 mais il y a un bug a .TintAndShade = 0 ! Cela fonctionne mais avec le bug à la fin. Et a savoir que ces lignes ne seront pas toujours placé de B10:D15 elles pourraient être de B19:D25 c'est variable en faite.

Sinon pour répondre a patrick1957 j'ai mis les couleurs c'est juste pour l'exemple mais normalement il n'y a pas de couleurs et ces blocs se trouverons toujours de la colonne B a D sur 8 lignes max en sachant que les colonnes de E a J seront toujours vide.

Et en sachant que ces petit blocs peuvent être n'importe ou c'est a dire B26:D32 (7 lignes) ou B35:D39 (5 lignes) etc etc mais en sachant que la colonne E sera vide et les colonnes jusque J aussi et donc déplace ce bloc de 3 trois colonnes vers la droite.

Re, bonjour Muratine

En faite il te faut du style à l'affichage par intermédiaire d'un bouton de commande :

Départ:

1/ Numéro de la colonne ?

2/ N° de lignes ?

3/ Nombres des cellules ?

puis, un MSGbox de confirmation (par exemple : Etes-vous certain(e) du transfert ?) oui/non

ensuite

Arrivée:

a/ dans la colonne et les cellules adéquates

puis, un dernier MSGbox transfert effectué (pour le fun)

oulala çà sent le w-end lol!

-;)

Oui surement un truc comme ça, je sais pas je suis pas expert en vba Le mieux que je puisse faire c'est enregistrer une macro mais ça c'est pour les débutant comme moi.

Bonjour,

Oui surement un truc comme ça, je sais pas je suis pas expert en vba

Pas besoin d'être expert en vba pour expliquer ton besoin, c'est tout ce qu'on te demande.

Quels sont les critères pour dire qu'une ligne doit être déplacée et pas une autre ?

Si c'est H:J vide et bien tu le dis... Si c'est plus complexe et bien tu dis tout

eric

Ok merci ERIC donc comme je le disais si les lignes de la colonne E sont vide, qu'il me déplace le bloc des 3 colonnes BCD de ces lignes vide vers la droite pour les mettre colonne H a J.

J'ai trouvé un code (Banzai) qui le fais très bien mais dans le sens contraire mais je comprend pas tous ce code.

Sub Decalage()
Dim Lg As Long
Dim J As Long
  Application.ScreenUpdating = False
  For J = 30 To Range("J65536").End(xlUp).Row Step 2
    If Application.CountA(Range("A" & J).Resize(1, 9)) = 0 Then
      Range("A" & J).Resize(1, 9).Delete shift:=xlShiftToLeft
    End If
  Next J

Re, bonjour

ok

Bah je sais pas ce que tu veux faire mais oublie le user form je voudrais juste une macro qui fonctionne

Sub deplacer()
    Dim lig As Long, pl As Range
    Set pl = Range("E1,H1:J1")
    For lig = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Application.CountA(pl.Offset(lig - 1)) = 0 Then
         Cells(lig, 8).Resize(, 3) = Cells(lig, 2).Resize(, 3).Value
         Cells(lig, 2).Resize(, 3).ClearContents
        End If
    Next lig
End Sub

Excellent ça fonctionne un grand merci eriiic c'est exactement ça que je voulais, pour le user form on verra plus tard mais je pense pas que ça aurais été nécessaire

Oui, à partir du moment où on sait détecter les lignes concernées ce n'est pas nécessaire.

Par contre une petite chose en sachant que j'ai 50 colonnes de plus a gauche j'ai rajouté 50 au code mais souci ça marche pas ça efface ce qu'il devrait déplacer, j'ai mis ça comme code dedans, j'ai mis fichier aussi

Sub deplacer()
    Dim lig As Long, pl As Range
    Set pl = Range("BC1,BF1:BH1")
    For lig = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Application.CountA(pl.Offset(lig - 1)) = 0 Then
         Cells(lig, 58).Resize(, 53) = Cells(lig, 52).Resize(, 53).Value
         Cells(lig, 52).Resize(, 53).ClearContents
        End If
    Next lig
End Sub
12exemple2.zip (13.52 Ko)

fait F1 sur Resize

eric

Ok merci eriiic le code donc devient ça et ça marche

Sub deplacer()
    Dim lig As Long, pl As Range
    Set pl = Range("BD1,BF1:BH1")
    For lig = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Application.CountA(pl.Offset(lig - 1)) = 0 Then
         Cells(lig, 58).Resize(, 3) = Cells(lig, 52).Resize(, 3).Value
         Cells(lig, 52).Resize(, 3).ClearContents
        End If
    Next lig
End Sub
Rechercher des sujets similaires à "cherche macro deplacer petit bloc"