Ajout de formule en VBA pour creer une liste de choix excel
marmotte78
Messages postés8Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention10 mai 2007
-
3 mai 2007 à 11:32
marmotte78
Messages postés8Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention10 mai 2007
-
3 mai 2007 à 15:38
Bonjour a tous
J'ai un petit souci :
Voici le code concerné, je souhaite rajouter par la ligne de code en rose une plage de cellule dans une liste de choix excel, L'application excel me retourne à l'éxécution une erreur 1004.
Enfin je 'narrive pas à determiné le problème car le meme code fonctionne sur une autre machine
ElseIf j = 9 Then
Set plage = Range(Cells(1, 53), Cells(1, 100)).Find(Cells(i, j - 1).Value, LookAt:=xlWhole)
If Not plage Is Nothing And Cells(i, j - 1).Value <> "" Then
n = plage.Column
M = 1
Do
M = M + 1
Loop Until Cells(M, n).Value = ""
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 3 mai 2007 à 11:43
Ton code est enregistré dans un module, dans la feuille directement ou dans une autre feuille de ton classeur ?
Il est possible qu'il faille préciser en plus du range la feuille sur laquelle tu travailles, et donc remplacer tous tes Range par Worksheets("Feuille 1").Range et Cells par Worksheets("Feuille 1").Cells ...
Autre point, tu as vérifié le contenu de tes variables M et n au moment de l'appel de cette ligne ? Il est possible que le contenu soit faux, si ça contient du texte ou 0 ... Tu as M-1 par ex., ça pourrait remonter une valeur 0 quoi que, à voir ta boucle avant, normalement, pas possible).
Quel type ont ces variables ? Si elles n'ont pas un type numérique, ça peut aussi planter (par habitude, j'ai déclaré une fois une variable en String au lieu d'Integer, une demi-heure pour retrouver mon heure tellement c'était gros et tellement j'étais réveillé ^^).
marmotte78
Messages postés8Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention10 mai 2007 3 mai 2007 à 12:07
J' ai une impression apres certains test, je pense qu'il y a une bourde avec le "xlvalidatelist". car je lui change cette valeur l'erreur n'appairait plus mais la liste aussi snif
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 3 mai 2007 à 12:13
bonjour,
Une cellule ne peut être délete, ni Add, ça marche pour les feuilles , les colonnes entière et les lignes entières.
si tu veux reculer toute la ligne de 1 cellule / Selection.Delete Shift:=xlToLeft
A+
louis
Vous n’avez pas trouvé la réponse que vous recherchez ?
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 3 mai 2007 à 14:12
J epense que tu t'es trompé oui ^^ Parce qu'en fait, ce n'est pas un ajout ou une suppression de cellule, mais un .add d'un type à la cellule.
C'est du VBA, cela revient à effectuer dans Excel sur une cellule :
Menu Données\Validation et à coller une liste.
Cela revient à créer un ComboBox dans Excel sans passer par un objet ou un UserForm.
Tu dis que le code est dans la feuille 2, toutes les données que tu tentes de manipuler sont aussi sur la feuille 2 ? La cellule à laquelle est attachée la liste est aussi dans la feuille 2 ?
De toutes façons, l'erreur '1004', c'est quasiment toujours un pb de Range, c'est à dire que tu définis une adresse de référence à une plage ou une cellule qu'Excel n'arrive pas à interpréter. Le pb est donc forcément soit sur un Cells, soit sur un Range.
Avant la validation, affiche un Debug.Print de toutes tes variables et de l'adresse retournée (ou alors, utilise un espion, mais je ne suis pas doué avec ^^).
POur moi, ça vient obligatoirement de par là.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 3 mai 2007 à 15:00
Ton code est le suivant. Insère à l'endroit indiqué en vert le code que je te mets :
n = plage.Column
M = 1
Do
M = M + 1
Loop Until Cells(M, n).Value = ""
Debug.print "Colonne : " & n
Debug.print "Ligne : " & MDebug.print "Boucle : i " & i & "j " & j
Debug.print "Adresse liste : " & Range(Cells(2, n), Cells(M - 1, n)).Address
Tu fais tourner ton programme, quand il a planté, tu vas dans l'éditeur VBA et tu tapes ctrl+G. Et tu fais un copier/coller de ce que la fenêtre de Debug donne. Peut-être qu'on y verra plus clair.
Sinon, tes variables pour que ton code fonctionne doivent être déclarée ainsi :
Dim Plage as range
Dim i as integer, j as integer, M as integer, n as integer