Insérer une ligne en dessous et copier en autofill
Résolu/Fermé
eltchico
-
15 nov. 2016 à 15:40
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 17 nov. 2016 à 16:29
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 17 nov. 2016 à 16:29
A voir également:
- Vba insérer une ligne
- Insérer une vidéo sur powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Partager photos en ligne - Guide
- Aller à la ligne excel - Guide
4 réponses
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 430
15 nov. 2016 à 19:50
15 nov. 2016 à 19:50
Bonjour
essaies ceci
Cdlmnt
essaies ceci
Range("A2").EntireRow.Insert Shift:=xlDown
Range("C1:I1").Select
Selection.AutoFill Destination:=Range("C1:I2"), Type:=xlFillDefault
Range("C1:I2").Select
Cdlmnt
eltchico26
Messages postés
3
Date d'inscription
mardi 15 novembre 2016
Statut
Membre
Dernière intervention
17 novembre 2016
16 nov. 2016 à 08:27
16 nov. 2016 à 08:27
Bonjour,
Je n'ai pas le même pseudo car j'ai dû créé un compte membre pour pouvoir répondre mais c'est bien moi.
Merci pour la réponse, cependant, le fait d'écrire Range("A2") cela va systématiquement m'insérer une ligne par rapport à la cellule A2 de ma feuille, or je souhaite insérer une ligne en dessous de la ligne active
Si par exemple je me trouve sur la ligne 9 je veux insérer une ligne en dessous de la ligne 9 voilà pourquoi j'avais écrit ActiveCell.Range("A2")
Le souci est que si c'est une case en colonne D qui est sélectionné alors VBA comprend que ma référence activecell est la 1ère colonne.
J'essaye de trouver un équivalent à activecell du type activerow mais à priori cela n'existe pas
Merci quand même d'avoir essayé, s'il y a d'autres propositions...
Je n'ai pas le même pseudo car j'ai dû créé un compte membre pour pouvoir répondre mais c'est bien moi.
Merci pour la réponse, cependant, le fait d'écrire Range("A2") cela va systématiquement m'insérer une ligne par rapport à la cellule A2 de ma feuille, or je souhaite insérer une ligne en dessous de la ligne active
Si par exemple je me trouve sur la ligne 9 je veux insérer une ligne en dessous de la ligne 9 voilà pourquoi j'avais écrit ActiveCell.Range("A2")
Le souci est que si c'est une case en colonne D qui est sélectionné alors VBA comprend que ma référence activecell est la 1ère colonne.
J'essaye de trouver un équivalent à activecell du type activerow mais à priori cela n'existe pas
Merci quand même d'avoir essayé, s'il y a d'autres propositions...
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
Modifié par michel_m le 16/11/2016 à 09:22
Modifié par michel_m le 16/11/2016 à 09:22
Bonjour Eltchico, CCM
a quoi sert range("A2") ?
parce que
ActiveCell.EntireRow.Insert Shift:=xlDown
insert une ligne en dessous de la ligne de la cellule active qqsoit sa colonne
tu peux aussi écrire
Rows(ActiveCell.Row + 1).Insert
Pour C1:I1
tu peux utiliser la fonction offset
Michel
a quoi sert range("A2") ?
parce que
ActiveCell.EntireRow.Insert Shift:=xlDown
insert une ligne en dessous de la ligne de la cellule active qqsoit sa colonne
tu peux aussi écrire
Rows(ActiveCell.Row + 1).Insert
Pour C1:I1
tu peux utiliser la fonction offset
Dim ligne As Byte
ligne = ActiveCell.Row
Rows(ligne + 1).Insert
Range(Cells(ligne, "C"), Cells(ligne, "I")).Copy ActiveCell.Offset(1, 0)
Michel
eltchico26
Messages postés
3
Date d'inscription
mardi 15 novembre 2016
Statut
Membre
Dernière intervention
17 novembre 2016
16 nov. 2016 à 16:46
16 nov. 2016 à 16:46
RE,
Tout d'abord merci pour vos réponses rapides
Michel_m, j'ai réussi à me dépatouiller entre ce que tu m'as proposé et mon code de base pour finalement arriver à cela :
Public Sub insertionligneCCM2()
Dim ligne As Byte
ligne = ActiveCell.Row
Rows(ligne + 1).Insert
Range(Cells(ligne, "C"), Cells(ligne, "I")).Select
Selection.AutoFill Destination:=Range(Cells(ligne, "C"), Cells(ligne + 1, "I")), Type:=xlFillDefault
End Sub
Et là je retrouve tout ce que je veux.
Peut importe la cellule sélectionnée dans la ligne active il me fait bien une insertion ligne en dessous puis me fait un copier/glisser (Autofill) des cellules C à I de la ligne active dans la ligne active +1.
Attention michel_m, activeCell.EntireRow.Insert Shift:=xlDown insère une ligne au-dessus de la ligne active et pas en dessous.
Sinon pour répondre à ta question, mon Range("A2") me servait de référence pour dire justement d'insérer une ligne en dessous de A1 (référence de ma ligne active) mais je suis assez novice en vba donc on fait comme on peut au début...
Avec ces aides encore merci.
Pour moi sujet clos.
En espérant qu'il soit utile à d'autres.
Tout d'abord merci pour vos réponses rapides
Michel_m, j'ai réussi à me dépatouiller entre ce que tu m'as proposé et mon code de base pour finalement arriver à cela :
Public Sub insertionligneCCM2()
Dim ligne As Byte
ligne = ActiveCell.Row
Rows(ligne + 1).Insert
Range(Cells(ligne, "C"), Cells(ligne, "I")).Select
Selection.AutoFill Destination:=Range(Cells(ligne, "C"), Cells(ligne + 1, "I")), Type:=xlFillDefault
End Sub
Et là je retrouve tout ce que je veux.
Peut importe la cellule sélectionnée dans la ligne active il me fait bien une insertion ligne en dessous puis me fait un copier/glisser (Autofill) des cellules C à I de la ligne active dans la ligne active +1.
Attention michel_m, activeCell.EntireRow.Insert Shift:=xlDown insère une ligne au-dessus de la ligne active et pas en dessous.
Sinon pour répondre à ta question, mon Range("A2") me servait de référence pour dire justement d'insérer une ligne en dessous de A1 (référence de ma ligne active) mais je suis assez novice en vba donc on fait comme on peut au début...
Avec ces aides encore merci.
Pour moi sujet clos.
En espérant qu'il soit utile à d'autres.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
Modifié par michel_m le 16/11/2016 à 17:11
Modifié par michel_m le 16/11/2016 à 17:11
Attention michel_m, activeCell.EntireRow.Insert Shift:=xlDown insère une ligne au-dessus de la ligne active et pas en dessous.
N'importe quoi!!!
En espérant qu'il soit utile à d'autres
Surtout pas ! Très mauvais code
Michel
N'importe quoi!!!
En espérant qu'il soit utile à d'autres
Surtout pas ! Très mauvais code
Michel
eltchico26
Messages postés
3
Date d'inscription
mardi 15 novembre 2016
Statut
Membre
Dernière intervention
17 novembre 2016
17 nov. 2016 à 16:08
17 nov. 2016 à 16:08
Bonjour
désolé michel_m mais quand je test activecell.entirerow.insert etc... cela m'insère une ligne au dessus et pas en dessous.
Par contre si tu penses que c'est un très mauvais code alors
1/ j'aimerais comprendre pourquoi afin de m'améliorer
2/ je suis preneur pour l'améliorer d'avantage si tu veux bien.
désolé michel_m mais quand je test activecell.entirerow.insert etc... cela m'insère une ligne au dessus et pas en dessous.
Par contre si tu penses que c'est un très mauvais code alors
1/ j'aimerais comprendre pourquoi afin de m'améliorer
2/ je suis preneur pour l'améliorer d'avantage si tu veux bien.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
>
eltchico26
Messages postés
3
Date d'inscription
mardi 15 novembre 2016
Statut
Membre
Dernière intervention
17 novembre 2016
17 nov. 2016 à 16:29
17 nov. 2016 à 16:29
bonjour
J'ai écris
et non
autrement dit , ca ne sert à rien de t'aider ?
J'ai écris
ligne = ActiveCell.Row
Rows(ligne + 1).Insert
et non
activecell.entirerow.insert ....
autrement dit , ca ne sert à rien de t'aider ?