Insertion de cellules uniquement sur une plage de prédéfinie.

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

Caninge

XLDnaute Accro
Bonjour à tous amis excelliens.

j'ai bien cherché sur le forum comment insérer des les lignes mais je voudrais
insérer ces lignes seulement dans certaines colonnes. Mais j'ai fait chou blanc comme on dit souvent.

Pourriez-vous m'aider s'il vous plait ?

Je joins un fichier avec les explications.

Bonne journée.
 

Pièces jointes

Bonjour,

A mettre dans le module de code de la feuille (click-droit sur l'onglet/visualiser le code):
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim nbLignes As Long
 If Target.Count = 1 And Target.Column = 2 And IsNumeric(Target.Value) Then
    nbLignes = Target.Value
    If nbLignes > 0 Then Target.Offset(1).Resize(nbLignes, 6).Insert xlShiftDown
 End If
End Sub

Bon après-midi
 
Bonjour,

La macro est au bon endroit. Un rien l'empêche de fonctionner:
Target.count = 1 et non 0. Essayez quand vous ne comprenez pas de vous servir de la touche F1 après avoir sélectionné un mot-clef de VBA.
Vous auriez vu que Target est la plage de cellules qui ont changé et que count en donne le nombre, qui ne peut être inférieur à 1 quand la macro est appelée.

Changez ça et voyez.
 
rebonjour,

moi et l'anglais ça fait deux Roblochon. C'est mon problème avec cette langue.
Il faut que je rajoute quelles lignes en VBA pour que les plages rajoutées soient jaunes.
Et aussi comment faire marche arrière en cas d'erreur.

merci de me dépanner

CANINGE
 
Bonjour,

Lancez l'enregistreur de macro, sélectionnez des cellules et donnez leur un fond jaune puis arrêtez l'enregistreur de macro et vous verrez.
Pour faire marche arrière, il faut appeler 'Application.Undo' avant de recommencer une quelconque action.

Bonne programmation
 
Bonsoir Caninge, Roblochon,

Avec cette macro on sait exactement ce que l'on fait :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim n
n = Int(Val(CStr(Target(1))))
If n < 1 Then Exit Sub
Cancel = True
Target(2, 1).Resize(n).Insert xlDown
Target(2, 1).Resize(n).Interior.ColorIndex = 35 'vert clair
End Sub
A vous d'adapter.

A+
 

Pièces jointes

Bonjour Caninge, le forum,

Fichier (2) avec ce code :
VB:
Dim n, cible As Range 'mémorise les variables

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
n = Int(Val(CStr(Target(1))))
If n < 1 Then Application.OnUndo "", "": Exit Sub
Cancel = True
Target(2, 1).Resize(n).Insert xlDown
Target(2, 1).Resize(n).Interior.ColorIndex = 35 'vert clair
Set cible = Target
Application.OnUndo "J'annule", Me.CodeName & ".Z"
End Sub

Sub Z()
If n < 1 Or cible Is Nothing Then Exit Sub
cible(2, 1).Resize(n).Delete xlUp
Application.OnRepeat "", Me.CodeName & ".Y"
End Sub

Sub Y()
If Not cible Is Nothing Then Worksheet_BeforeDoubleClick cible, False
End Sub
A+
 

Pièces jointes

Bonjour à tous,

merci de se pencher sur mon tableau:
je reviens sur mon fichier que j'ai modifié. Je vais abandonner d'ajouter des lignes par VBA.
Sans macro si possible comment remplir des cellules selon la valeur d'une autre cellule.
un peu compliqué à comprendre comme ça, je me met à votre place. J'envoie un fichier avec une explication plus concrète.
Merci
 

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
2
Affichages
595
Retour