Excel/macro/aide insertion ligne vers bas/code possible ??
Forum Programmation : Excel/macro/aide insertion ligne vers bas/code possible ??
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 !!!!
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
Je lui ai répondu : embauchez moi et je vous aiderai a le trouver !!
Répondre à leghola
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
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.
A+
NIco
( non j'ai toujours le même message d'erreur....
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
Je lui ai répondu : embauchez moi et je vous aiderai a le trouver !!
Répondre à leghola
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....
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
Je lui ai répondu : embauchez moi et je vous aiderai a le trouver !!
Répondre à leghola
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
salut !
J'ai essayé Selection.ShapeRange.IncrementTop HauteurLigne * NbLignes mais sans succès...
Merci quand même ! J'apprécie !
Il y a 552 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
