Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro permettant de décaler une cellule liée à la cellule d'en dessous

  • Initiateur de la discussion Initiateur de la discussion RomaneK
  • 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 !

RomaneK

XLDnaute Nouveau
Bonjour,

Je suis débutante en macro. Voici mon problème: J'ai créée une macro me permettant de rajouter une ligne à l'endroit sélectionné en recopiant la cellule du dessus et en effaçant les données de cette dernière (rajout fait dans deux feuilles, 1:mes données, 2:ma gestion de cellules liées). Cependant, les lignes de dessus (dans la feuille de données) comportent des cases à cocher et lors de l'ajout de ligne, la case est copié en dessous mais la cellule liée reste la même que celle du dessus. J'aimerais donc rajouter à la fin de mon code, quelque chose qui me permettrait de décaler la cellule liée en dessous de celle copiée. J'espère être assez claire, j'ai fait le tour des forums et pas de solutions trouvées. Voici le code d'ajout de ligne:

VB:
Sub Ajout_ligne()

Application.ScreenUpdating = False
' Ajout d'une ligne dans la feuille Choix matériaux et Gestions_macros
    Sheets("Choix matériaux").Select
        'faire une nouvelle ligne
        ActiveCell.EntireRow.Insert Shift:=xlDown
        'copier la ligne du dessus
        ActiveCell.Offset(-1, 0).EntireRow.Copy Cells(ActiveCell.Row, 1)
        On Error Resume Next
        'effacer le contenu de la nouvelle ligne mais garder la forme
        ActiveCell.EntireRow.ClearContents
    Sheets("Gestion_macros").Select
        'faire une nouvelle ligne
        ActiveCell.EntireRow.Insert Shift:=xlDown
        'copier la ligne du dessus
        ActiveCell.Offset(-1, 0).EntireRow.Copy Cells(ActiveCell.Row, 1)
        On Error Resume Next
        'effacer le contenu de la nouvelle ligne mais garder la forme
        ActiveCell.EntireRow.ClearContents
    Sheets("Choix matériaux").Activate
      
End Sub
 
Bonjour Romanek et bienvenue sur XLD 🙂

Pour chaque feuilles, il faut lui dire que cellule il doit sélectionner. Un exemple à adapter

VB:
Option Explicit
Public cel As Range        'À mettre en dessus de Sub Ajout_ligne()

With  Sheets("Choix matériaux")
set cel = .Cells(3, "A")
End with

With cel
.EntireRow.Insert Shift:=xlDown
cel.Offset(-1, 0).EntireRow.Copy   Sheets("Choix matériaux").Cells(cel.Row, 1)
End With

With  Sheets("Gestion_macros")
set cel = .Cells(2, "A")
End with

With cel
.EntireRow.Insert Shift:=xlDown
.Offset(-1, 0).EntireRow.Copy   Sheets("Gestion_macros").Cells(.Row, 1)
End With
 
"Pour chaque feuilles, il faut lui dire que cellule il doit sélectionner." C'est à dire la cellule sélectionnée au tout début avant l'ajout de ligne, ce que j'appelais "ActiveCell" ?
Ce code doit-il remplacer ou compléter le miens ?
Désolé je ne comprends pas comment ce code fonctionne surtout la partie "set cel = .Cells(3, "A")" (est ce que ça sélectionne la cellule A3 ?) et "Sheets("Choix matériaux").Cells(cel.Row, 1)"
Désolé je n'ai encore pas utilisé les fonctions cells, set...
Merci pour votre réponse
 
- 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
2
Affichages
707
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…