XL 2021 Décalé les cellules

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 !

viper68

XLDnaute Nouveau
Bonjour à tous,

Voici mon souci en espérant que vous avez la solution.
J'ai un fichier excel avec 6 colonnes qui représente 6 semaines.
La 1 er semaine est composé de 14 lignes et est identique à la 3 ème et 5 ème
idem pour la 2 ème aussi composé de 14 lignes qui est identique à la 4 ème et 6 ème.

les cellules sont composée de texte.
J'aimerais quand je change le texte de ma première cellule que toutes les autres cellules se décalent d'une case
le top serai que je puisse modifier n'importe quelle cellule de n'importe quelle colonne avec me même processus.

Pas facile d'expliquer la chose.

Merci d'avance
N'hésiter pas à me contacter si ma demande est brouillon.

Vous êtes les meilleurs

Bon courage !!!
 

Pièces jointes

  • Capture d’écran 2025-02-22 à 18.56.28.png
    Capture d’écran 2025-02-22 à 18.56.28.png
    303.3 KB · Affichages: 18
  • essai planning.xlsx
    essai planning.xlsx
    9.4 KB · Affichages: 3
j'ai vérifié.. et corrigé le code pour que ca fonctionne avec 12 colonnes. ou 3 ou 4 ou...
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim TabInit() As Variant
    Dim TabWork() As Variant
    
    NouvelAgent = Application.InputBox("Veuillez taper l'agent à insérer")
    nbcolplanning = 12 'nombre de colonnes à traiter
    
    With ActiveSheet
        'On détermine la position du nouvel élement
        liginsert = Target.Row - .Range("Planning")(1, 1).Row + 1
        ColInsert = Target.Column - .Range("Planning")(1, 1).Column + 1
                
        TabInit = .Range("Planning").Value 'on place toute la plage planning dans le tablo vba
        Nbele = UBound(TabInit, 1) 'nbele par colonne
        ReDim TabWork(1 To nbcolplanning * Nbele, 1 To 1) 'on dimsensionne un tableau à 1 colonne
                
        NumElementInsert = (ColInsert - 1) * Nbele + liginsert 'numéro de l'élément inséré dans le tabwork
                
        'on remplit le tabwork  avec le planning
        For j = 1 To nbcolplanning
            For i = 1 To Nbele
                TabWork(Nbele * (j - 1) + i, 1) = TabInit(i, j)
            Next i
        Next j
        
        'on procède au décalage
        For i = UBound(TabWork, 1) To NumElementInsert + 1 Step -1
            TabWork(i, 1) = TabWork(i - 1, 1)
        Next i
        TabWork(NumElementInsert, 1) = NouvelAgent
        
        '.Range("A5").Resize(UBound(TabWork, 1), 1) = TabWork
        'on remplit à nouveau le TabInit
        For i = 1 To UBound(TabWork, 1)
            col = Int((i - 1) / Nbele) + 1
            lig = ((i - 1) Mod Nbele) + 1
            TabInit(lig, col) = TabWork(i, 1)
        Next i
        
        .Range("Planning").Resize(UBound(TabInit, 1), nbcolplanning) = TabInit 'on place le résultat dans la feuille
    End With
    
    Cancel = True 'on annule le double clic pour selectionner la cellule
End Sub
 
Bonjour Vgendron,

Super travail, merci.
Pourriez vous encore modifier le VBA.
Je n'arrive pas à modifier en rajoutant d'autres colonnes, j'aimerais au total les 52 colonnes du dimanche avec les colonnes des jours fériés " sauf le 1er mai "
Peut on rajouter dans la formule la mise en place des dates automatiques au dessus de chaque colonne.
Au final cela donnerai un tableaux sur un an.
Par la suite je me débrouillerai pour faire les années suivantes.

Autre question est-ce normal quand je rentre un nouvel agent, et si je fais une erreur je ne peux pas revenir en arrière la flèche retour est grisée ?

Merci
 
bonjour
si tu augmentes le nmbre de colonnes >12, il faut aussi modifier la plage nommée "Planning"==>Voir Gestionnaire de noms

et EVIDEMMENT, il faut que le nombre de ligne soit toujours le meme..

et tout ce qui a été fait par macro ne PEUT pas être annulé avec la flèche "annuler" d'excel
 
Vous êtes rapide, c'est très agréable.
J'ai comparer les différentes VBA changer le nombre de colonne OK mais la plage "planning" je galère.
J'ai vraiment un niveau bas.
Voici l'erreur qu'il me donne juste après le message erreur 9
Merci
 

Pièces jointes

  • Capture d’écran 2025-02-28 à 15.09.02.png
    Capture d’écran 2025-02-28 à 15.09.02.png
    345.2 KB · Affichages: 10
  • planning annee 2025.xlsm
    planning annee 2025.xlsm
    26 KB · Affichages: 1
la plage "Planning", c'est un nom qu'on donne à un ensemble de cellules
dans ton cas: toute la plage B5:BK18
pour donner un nom à une plage, (ou une seule cellule si on veut) c'est dans Excel, que ca se passe.. pas dans VBA
dans le ruban: "Formules / Gestionnaire de noms"
sur le nom "Planning", tu modifies "fait référence à"

et voila

on pourrait aussi se passer de cette plage, et demander à VBA de se débrouiller pour detecter la plage complète, mais je te laisse d'abord modifier à la main dans le gestionnaire de nom
 
bon.. comme je m'absente un moment..

déjà.. dans ton fichier
selectionne B5
puis ctrl+A ==> tu vois normalement qu'excel a détecter toute la zone autour de B5 et l'a sélectionnée
la zone détectée est délimitée par des lignes vides (la ligne 19) et des colonnes vides (BI)

tu te retrouves donc avec toute la plage que j'ai justement appelée "Planning"

pour faire ca en VBA: c'est UNE ligne de code
range("B5").currentregion.select

et donc la solution VBA qui permet de se passer du gestionnaire de nom done ceci:

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim TabInit() As Variant
    Dim TabWork() As Variant
    Dim RngPlanning As Range
    
    NouvelAgent = Application.InputBox("Veuillez taper l'agent à insérer")
    'nbcolplanning = 62 'nombre de colonnes à traiter = Nb de colonne de la plage "Plannng"
    
    With ActiveSheet
        Set RngPlanning = .Range("B5").CurrentRegion 'on définit la plage
        'RngPlanning.Select
        nbcolplanning = RngPlanning.Columns.Count 'on en déduit le nombre de colonnes
        'On dŽtermine la position du nouvel Žlement
        liginsert = Target.Row - RngPlanning(1, 1).Row + 1
        ColInsert = Target.Column - RngPlanning(1, 1).Column + 1
                
        TabInit = RngPlanning.Value 'on place toute la plage planning dans le tablo vba
        Nbele = UBound(TabInit, 1) 'nbele par colonne
        ReDim TabWork(1 To nbcolplanning * Nbele, 1 To 1) 'on dimsensionne un tableau ˆ 1 colonne
                
        NumElementInsert = (ColInsert - 1) * Nbele + liginsert 'numŽro de l'ŽlŽment insŽrŽ dans le tabwork
                
        'on remplit le tabwork  avec le planning
        For j = 1 To nbcolplanning
            For i = 1 To Nbele
                TabWork(Nbele * (j - 1) + i, 1) = TabInit(i, j)
            Next i
        Next j
        
        'on procde au dŽcalage
        For i = UBound(TabWork, 1) To NumElementInsert + 1 Step -1
            TabWork(i, 1) = TabWork(i - 1, 1)
        Next i
        TabWork(NumElementInsert, 1) = NouvelAgent
        
        '.Range("A5").Resize(UBound(TabWork, 1), 1) = TabWork 'pour le débug
        'on remplit ˆ nouveau le TabInit
        For i = 1 To UBound(TabWork, 1)
            col = Int((i - 1) / Nbele) + 1
            lig = ((i - 1) Mod Nbele) + 1
            TabInit(lig, col) = TabWork(i, 1)
        Next i
        
        RngPlanning.Resize(UBound(TabInit, 1), nbcolplanning) = TabInit 'on place le rŽsultat dans la feuille
    End With
    
    Cancel = True 'on annule le double clic pour selectionner la cellule
End Sub
 
J'ai trouvé la plage "planning" cool , j'ai modifier.
Malgré la nouvel formule BVA ça beuge quand même j'ai testé l'avant dernière colonne, bref
Je vais encore regarder et tester, je dois faire une fausse manipe quand je change le code VBA.
Merci beaucoup j'avance quand même sur le projet.
A bientôt

J'aurai surement encore besoin de toi
 
Bonjour Vgendron,

Voici ci-joint mon fichier.
Ton code VBA ça marche bien pour inserer un nouvel agent puis les lignes se décalent.
J'ai modifié la plage "planning"
je n'ai plus de beug ouf !!!, mais j'ai encore un souci.
Quand j'ouvre mon tableau je fais un clic dans une cellule je modifie le nom et il le duplique une colonne sur 2 impec si je fais 2 clics et insérer un nouvel agent les cellules se décalent par contre si je veux modifier à nouveau un nom cela ne marche plus , je peux seulement insérer ????

Merci d'avance
 

Pièces jointes

hello

euh.. c'est un peu brouillon ce que tu dis..

quand tu cliques ==> il ne se passe rien
la boite de dialogue qui te demande le nouveau nom s'ouvre sur un DOUBLE CLIC...

une fois validé, TOUS les noms sont DECALES à partir de celui inséré sur TOUTES les COLONNES==> il n'y a pas de DUPLICATION

comme indiqué précédemment, le formules que tu as au départ sont supprimées et remplacées
tu as d'ailleurs précisé toi meme que la "duplication" des colonnes 2 à 2 était à oublier..

et oui, le code est fait pour insérer/décaler... c'était la demande
 
Hello Vgendron,
J'espère que tu vas bien.
J'ai une question, le VBA que tu as fait fonctionne très bien chez moi, j'ai un Imac excel 2019, mais je l'ai essayé au travail sur windows 10 excel 2021
insérer le nouvel agent ne marche pas.
Peut il y avoir un problème de version ??? le VBA est compatible dans toutes versions ???
Merci bonne journée
 
Bonjour

J'ai aussi 2021, ca devrait donc fonctionner chez toi
c'est quoi le message d'erreur que tu as? (le debugger s'arrete sur quelle ligne en jaune) ?
Bonjour Vgendron,
J'ai encore regardé et essayé plusieurs solution mais rien ni fait, dommage.
Je n'ai aucun message d'erreur.
Ci-joint la photo de mon icone excel au boulot , avec se point d'exclamation.
Ci-joint le fichier excel fait sur le PC boulot
Ci-joint la capture du code VBA sur le PC
Moi j'ai un IMac à la maison, et ça marche.
As tu une explication ?
Merci pour ton aide.
Bonne journée
 

Pièces jointes

  • vba.PNG
    vba.PNG
    57.9 KB · Affichages: 2
  • planning dim 2025.xlsm
    planning dim 2025.xlsm
    25.9 KB · Affichages: 1
  • Capture d’écran 2025-03-17 à 10.40.53.png
    Capture d’écran 2025-03-17 à 10.40.53.png
    366.9 KB · Affichages: 2
- 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
3
Affichages
508
Réponses
3
Affichages
464
Retour