Se connecter / S'enregistrer
Votre question

Excel/macro/aide insertion ligne vers bas/code possible ??

Tags :
  • Visual basic
  • Programmation
Dernière réponse : dans Programmation
12 Février 2008 14:59:45

Bonjour,

Je suis à créer un formulaire de suivi en Excel et j’ai inséré des menus déroulants pour les choix de réponse. J’ai aussi créé une macro qui permet d’ajouter une ligne supplémentaire ainsi qu’un menu déroulant.

Le problème : mes ajouts se font vers le haut alors que j’aimerais que le tout reste chronologique donc que les ajouts se fassent vers le bas. Voici ce que visual basic me donne comme code de la macro que j’ai fait :

Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 11-02-2008 par jbourque
'

'
Rows("17:17").Select
Selection.Insert Shift:=x1down
ActiveSheet.DropDowns.Add(2.25, 303.75, 188.25, 18).Select
With Selection
.ListFillRange = "Données!$A$2:$A$15"
.LinkedCell = ""
.DropDownLines = 15
.Display3DShading = False
End With
End Sub


Pouvez-vous me dire s’il y a un code qui serait possible d’insérer pour que mes menus/lignes supplémentaires s’ajoutent vers le bas ??

Merci beaucoup pour votre aide dans mon apprentissage !!!!

Autres pages sur : excel macro aide insertion ligne vers bas code possible

12 Février 2008 15:32:16

Hello,

Pour calculer rapidement la derniere ligne d'une liste :

Range("A1").select
Dim LigneVide as integer
LigneVide = ActiveCell.SpecialCells(xlLastCell).Select +1

Il te suffit ensuite de faire un :
Dim Plage as string
Plage = LigneVide & ":" & LigneVide

et reprendre a ce niveau de ton code :
Rows(Plage).Select

A++
Nico
12 Février 2008 19:22:53

Bonjour Nico,

voici le ce que j'ai insérer et qui me produit un message d'erreur (erreur d'exécution 13 / incompatibilité type):

Sub Macro3()

'

' Macro3 Macro

' Macro enregistrée le 11-02-2008 par jbourque

'



'



Range("A1").Select

Dim LigneVide As Integer

LigneVide = ActiveCell.SpecialCells(xlLastCell).Select + 1

Dim Plage As String

Plage = LigneVide & ":" & LigneVide

Rows("plage").Select

Selection.Insert Shift:=x1down



ActiveSheet.DropDowns.Add(2.25, 303.75, 188.25, 18).Select

With Selection

.ListFillRange = "Données!$A$2:$A$15"

.LinkedCell = ""

.DropDownLines = 15

.Display3DShading = False



End With

End Sub
12 Février 2008 20:45:50

Hello, :hello: 

non non :) 
tu as mal lu.

ce n'est pas
Rows("Plage").Select
mais
Rows(Plage).Select
Sans guillemets.

Tu vas voir ca va fonctionner. :D 

A+
NIco

12 Février 2008 21:56:29

:o ( non j'ai toujours le même message d'erreur....
13 Février 2008 08:44:02

Hello,

Arf, sorry ... Une erreur de ma part.

Je m'explique. En fait, on récupérait l'objet active cell alors qu'on ne souhaite récupérer que la ligne associée.
La ligne est dénommée Row donc :





Dim LigneVide As Integer

' Je me déplace a la derniere cellule de mon tableau
' Equivalent de la fonction Ctrl+Fin dans excel
ActiveCell.SpecialCells(xlLastCell).Select

' Je récupère la ligne asociée
LigneVide = activecell.row + 1

' Je construis une plage par rapport a cette "dernière" ligne
Dim Plage As String
Plage = LigneVide & ":" & LigneVide

Rows(plage).Select
Selection.Insert Shift:=x1down


Bon courage
a+
Nico
13 Février 2008 20:16:30

Bonjour Nico,

Merci pour ton aide et surtout ta patience. Malheureusement cela ne fonctionne toujours pas lorsque j'appuie sur le bouton lié à ma macro, il n'y a pas de ligne vierge qui s'insère au dessous et qui décale mes données plus bas....mon menu se crée sur mon menu déjà existant.

Est-ce que tu aurais un mail que je t'envoie le fichier ou le print screen de mon formulaire ?

Je peux comprendre si tu n'as pas le temps de m'aider davantage....
13 Février 2008 20:51:23

Hello,

Envoie moi tout ca sur leghola45 AT gmail DOT com avec ce que tu souhaites faire précisément.. Je ne pense pas avoir correctement compris ce que tu souhaitais :) 

A++
Nico
14 Février 2008 10:41:50

Salut à tous

Il me semble que le problème vient de cette instruction:
ActiveSheet.DropDowns.Add(2.25, 303.75, 188.25, 18).Select
Ici, la position de la liste déroulante est indiquée explicitement avec des valeurs absolues. Si on veut que la nouvelle liste soit décalée par rapport à la précédente, il faut déterminer la hauteur de la ligne ajoutée et le nombre de lignes entre les deux.
Ceci fait, l'instruction suivante devrait t'aider:
Selection.ShapeRange.IncrementTop HauteurLigne * NbLignes
Est-ce que c'est mieux ?

Bonne continuation
22 Février 2008 20:44:17

salut !

J'ai essayé Selection.ShapeRange.IncrementTop HauteurLigne * NbLignes mais sans succès...

Merci quand même ! J'apprécie !
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS