Décaler une cellule

bonjour tout le monde,
je suis novice et je crois que j’ai besoin de votre aide…

J’aimerai décaler des cellules. je m’explique, est-il possible de décaler les informations de la cellule A1 en B1 ? Les informations de la cellule B1 iraient donc en C1 et ainsi de suite.
Ce décalage se ferait quand je clique sur un bouton.

Merci par avance pour votre aide

Bonjour,

La macro ci-dessous permet de décaler les valeurs de B1 à AZ1 (exemple) vers la droite, mais pas les formules. Si vous avez des formules, il faudrait fournir un fichier réel.

24exemple.xlsm (19.46 Ko)

Bonjour à tous

Une variante :

7classeur1-v1.xlsm (22.52 Ko)
Option Explicit

Dim plage As Range
Dim colD&, colF&
Sub Bouton()

    colF = Cells(1, Columns.Count).End(xlToLeft).Column
    colD = IIf(Cells(1, colF - 1) = "", colF, Cells(41, colF).End(xlToLeft).Column)
    Set plage = Range(Cells(1, colD), Cells(1, colF))
    plage.Cut Destination:=Range(Cells(1, colD + 1), Cells(1, colF + 1))
End Sub

Bye !

Bonjour à tous,

Une autre variante ;-))

Sub Macro1()
    Range("A1").Insert Shift:=xlToRight
End Sub

Re bonjour, merci pour votre aide !

J'ai crée un petite exemple pour expliciter ma demande.

  • Dans la feuille bdd Import : une base de données avec toutes les informations importées manuellement (plus tard, automatiquement via SAP). C'est l'ordre d'entre des voitures dans la ligne de production.
  • Dans la feuille Prod : la ligne de production poste par poste avec les information les plus importantes à chaque poste.
  • Dans la feuille bdd Export : les archives de toutes les voitures passées sur la ligne dans l'ordre de sortie.

C'est un fichier qui va permettre de faire avancer une ligne de production de voiture (poste par poste) via un bouton. Et permettre de voir grâce au Timer si l'avancer de la ligne a pris du retard ou de l'avance.

Mais par contre, je ne sais pas si c'est possible de décaler des informations d'une feuille à l'autre. Et selon les postes, sélectionner seulement les informations qui nous intéressent (au poste 1, la charge de travail du poste 2 ne nous intéresse pas) mais tout de même pouvoir restituer la totalité des information lors de l'archivage.

Je suis consciente que ma demande est complexe…

Merci à toute personne pouvant m'aiguiller

10exemple-1.xlsm (28.07 Ko)

up

Pour faire simple, est-ce que c'est cela que vous voulez obtenir ?

screen

Bonjour, oui c'est ça sauf que l'avancé ce fait dans l'autre sens. La voiture de ref 009 située dans la bdd import va d'abord dans sur le poste 1 puis le poste 2, ensuite le poste 3 et enfin le poste 4. une fois le poste 4 terminé, la voiture de ref 009 va dans la bdd export.

Merci d'avance pour votre aide

Bien vu.
Par ailleurs, j'ai noté une impossibilité dans la feuille BDD Export. Comme dans la feuille Prod, il n'y a pas de place pour charger les options 3 et 4, on ne devrait pas trouver de valeur dans les colonnes H et I de la feuille BDD Export. Il faudrait pour cela que dans les cartouches Poste 1 à 4 de la feuille Prod on ait 4 lignes de transfert au lieu de 3.
Comment faut-il voir les choses ?

Oui oui, je n'ai aucun souci à mettre 4 lignes de transfert au lieu de 3 dans les cartouches des postes 1 à 4.

Alors, une proposition à étudier et à adapter :

Sub AvancerProduction()
    Dim wS1 As Worksheet, wS2 As Worksheet, wS3 As Worksheet
    Dim nL1 As Long, nL3 As Long
    Dim i As Long, j As Long
    Dim ref As String

    Set wS1 = Sheets("BDD Import")
    Set wS2 = Sheets("Prod")
    Set wS3 = Sheets("BDD Export")
    nL1 = wS1.Cells(Rows.Count, "C").End(xlUp).Row

    ref = wS2.Cells(13, 14).Value
    For i = 5 To nL1
        If wS1.Cells(i, 3).Value = ref Then
            ' Exportation
            nL3 = wS3.Range("C4").End(xlDown).Row + 1
            If wS3.Cells(5, 3) = "" Then nL3 = 5
            For j = 3 To 10
                wS3.Cells(nL3, j) = wS2.Cells(Int((j + 1) / 2) + 11, 15 - j Mod 2)
            Next j

            ' Décalage
            wS2.Range("K13:L16").Copy Destination:=wS2.Range("N13")
            wS2.Range("H13:I16").Copy Destination:=wS2.Range("K13")
            wS2.Range("E13:F16").Copy Destination:=wS2.Range("H13")

            For j = 3 To 10
                wS2.Cells(Int((j + 1) / 2) + 11, 6 - j Mod 2) = wS1.Cells(i + 4, j)
            Next j
        End If
    Next i
End Sub
8autos.xlsm (31.48 Ko)

Oui ça marche merci beaucoup !

Est-il possible d'avoir la feuille "bdd import" dynamique ? dans le sens où lorsqu'une voiture rentre sur la ligne de production, elle sort de la bdd import (comme si après)

image image

Il suffit de détruire la ligne du véhicule entré en production après le bloc d'instructions "Décalage" : une seule instruction suffit.

            ' Décalage
            wS2.Range("K13:L16").Copy Destination:=wS2.Range("N13")
            wS2.Range("H13:I16").Copy Destination:=wS2.Range("K13")
            wS2.Range("E13:F16").Copy Destination:=wS2.Range("H13")

            For j = 3 To 10
                wS2.Cells(Int((j + 1) / 2) + 11, 6 - j Mod 2) = wS1.Cells(i + 4, j)
            Next j

            ' Suppression du véhicule entré en ligne de production
            wS1.Rows(i).EntireRow.Delete
Rechercher des sujets similaires à "decaler"