Rechercher : dans
Par :

Macro pour positionner sur une cellule ?

Dernière réponse le 11 jun 2008 à 10:13:32 BPAUD, le 11 mai 2008 à 03:53:35 
 Signaler ce message aux modérateurs

Bonjour,
Je ne suis pas un expert, ni VB ni Excel.
Il me semble pourtant que ce que je cherche ne devrait pas être trop "difficile" :
J'ai d'une part une feuille de données, d'autre part une feuille plus applicative.
Je peux (RechercheV) ramener toute valeur de la ligne dont le champ de tête satisfait à une condition mais je n'arrive pas a faire se positionner le 'curseur' sur la dite cellule.
Je souhaite pouvoir, via une macro simple, positionner (Range.Select ou qque chose comme ca) le pointeur sur la cellule de la feuille de donneés afin de pouvoir effectuer des modifications dans la ligne ...
Merci de votre aide... il me reste quelques heures à peine pour règler ce problème et poursuivre ...

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Macro pour positionner sur une cellule ? » dans :
[VBA] Détection de modification de cellule VoirExemple pour une MFC avec plus de 3 conditions. Private Sub Worksheet_Change(ByVal Target As Range) Dim Cel As Range For Each Cel In Target 'Adapter la/les plages. If Not Intersect(Cel, Range("B1:B30,D1:D30")) Is Nothing...
Excel - Effacer le contenu de certaines cellules. VoirProblème Voici mon problème : J'ai 6 cellules comportant des listes déroulantes. Les 6 sont sélectionnées à chaque fois. J'aimerais pouvoir avoir un bouton pour réinitialiser les 6 en même temps c'est à dire qu'elles apparaissent vides (bien sûr...
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
Référencement d’une plage de cellules VoirPLAGE DE CELLULES CONTIGUËS Une plage de cellules se note en indiquant les références de la cellule de début et de fin, séparées par le caractère : (deux-points) : Reference_Cellule_Debut:Reference_Cellule_Fin La référence à une ligne ou à une...

1

michel_m, le 11 mai 2008 à 09:38:35

Pourrais tu être plus clair?

Répondre à michel_m

3

BPAUD, le 11 mai 2008 à 10:00:11

Bonjour et Merci de ton contact.
Je vais essayer d'êtrte clair mais du coup, je n'ai dormi que deux heures alors....
Disons que j'ai une feuille qu'on appelera BdD dans laquelle figurent des enregistrements.
Sur une autre feuille, j'ai un ecran de consultation et d'entrée de nouveaux entergistrements.
Ca marche : je crée, je consulte, je rapatrie pour consultation toutes les données de détail etc.
OU CA SE GATE c'est si je veux MODIFIER ou completer un enregistrement...
Si j'applaique ma procédure d'enregistrement, je crée un NOUVEL enregistrement et don un doublon....

Je m'étais dit "Facile" je connais les eléments clés de l'enregistrement à modifier... une RechercheV sachant me ramener le 'contenu' de la ligne, il doit bien y avoir un moyen pour se "pointer" sur le champ de tête de la ligne ds la Base... puis d'y coller le contenu de l'écran de saisie (pour faire simple)avec les données modifiées...
Mais voila je ne trouve pas comment.

Merci de ton intérêt et de ton aide...
Je me suis engagé à pondre un truc pour ma fille de passage pour le WE ... et elle va repartir "sans que Je..." c'est pas très confortable.
B.

Répondre à BPAUD

2

Mike-31, le 11 mai 2008 à 09:42:06

Salut,

si ta cellule est fixe
ce code selectionne la cellule B13

Range("B13").select



si tu veux l'assujetir à une conditionnelle
ce code controle B13 si elle contien toto elle sélectionne F13 tu peux également écrire différente <> "toto"

if Range("B13") = "toto" then
Range("F13") .select
end if

A+

Répondre à Mike-31

4

BPAUD, le 11 mai 2008 à 10:08:20

Bonjour et Merci de ton intérêt.
Mon probleme est le suivant :
Je suis dans une feuille disons "F1"
Dans cette feuille je veux copier une (ou des valeurs) et aller les copier dans une autre feuille dite F2 à un endroit particulier dont j'ai la référence dans une cellule connue de F1.
Soit dans F1
Cellule A : Contenu à copier
Cellule B : Adresse de F2 ou je veux me "pointer"

La "macro cherchée" (ou un équivalent en fonction Excel) se pointe sur la cellule X (référence figutant en F1-Cell B) et y colle (Valeur) le contenu de F1 cellule A...
Ai-je été clair... je ne suis pas sûr... pas beaucoup dormi.
Merci qd mm et à plus.
B

Répondre à BPAUD

12

BPAUD, le 11 mai 2008 à 17:05:35

Mike :
Je ne suis pas sur d'avoir compris :

Range("B13").select
se positionne en effet sur B13
Sauf que je ne sais pas ecrire en dur, dans ma macro la référence B13.
La reference sur laquelle je veux me pointer figure dans une autre cellule de la feuille
En outre, la refernce se trouve sur un efeuille differente de celle ou je veux me pointer.

Répondre à BPAUD

5

michel_m, le 11 mai 2008 à 10:11:27

Re, bonjour Mike,

Je vois a peu près ce que tu veux faire:si la ref clé existe tu modifies des champs , sinon c'est un nouvel enregistrement?
si c'est ce qyue tu cherches, dans les 2 cas il s'agit d'une recherche de ligne...
Bon, le mieux est que tu mettes un extrait de ton classeur en PJ sans données confidentielles
pour cela
www.cjoint.com

éventuellement, tu compresses avec .zip (pas .rar)

Répondre à michel_m

13

BPAUD, le 11 mai 2008 à 17:09:44

Avez vous ... ou pas finalement recu mon anvoi de fichier exemple ?

Répondre à BPAUD

6

eriiic, le 11 mai 2008 à 10:46:11

Bonjour,

voici un exemple pour te guider :
http://www.cijoint.fr/cjlink.php?file=cj200805/cijplB6uv2.xl­s

eric

Répondre à eriiic

14

BPAUD, le 11 mai 2008 à 17:17:38

http://www.cijoint.fr/cjlink.php?file=cj200805/cijrP51M55.xl­s
Je persisite à essayer...
Mais votre silence m'inquiète....
J'ai du commetre quelques impairs... bien involontaires je vous assure !qui ont du vous irriter tous les trois.
Dans tous les cas et même si j'ai trop usé de votre patience, Merci...
J'essaierai de revenir sur ce forum un jour ou j'aurai moins de stress et de presssion de l'urgence pour y voir plus clair et me familiariser avec les structures et modalités.
Mille excuses et MERCI quand m^me ... je vais essayer de continuer à chercher mais je crois bien avoir épuisé mes cartouches disponibles .... Je vais laisser tomber et tronquer ma solution .... Tant pis pour cette fois....
Mais la question reste entière...il me semble a priori que la réponse doit être d'une facilité enfantine....et qu'elle doit me crever les yeux. Ca doit être la pression.
Amitiés

Répondre à BPAUD

17

BPAUD, le 11 mai 2008 à 18:54:07

Eriic,
Merci BEAUCOUP...
Mais je ne comprends rien du tout.
Je pense que je veux jouer dans une cour qui n'est pas la mienne....
je vous remercie de votre sollicitude et je vais quitter ce forum.
Zetes trop tech pour moi.

MERCI QUAND MEME DE VOTRE ATTENTION ET BONNE VOLONTE !

Répondre à BPAUD

18

eriiic, le 11 mai 2008 à 19:12:55

J'ai du commetre quelques impairs... bien involontaires je vous assure !qui ont du vous irriter tous les trois.
Mais non, pas du tout. T'inquiete, si tous étaient comme toi ça irait très bien ;-)

Ceci dit la solution proposée par michel_m à 17h52 fonctionne très bien et est adaptée à ton classeur (que je n'avais pas lorsque j'ai fait ma réponse).
Te-teste sur son classeur et tu verras que c'est ok.
Fais un clic-droit sur l'onglet feuil2 et 'visualiser le code' pour voir. Et tu as une procédure dans le module 1 aussi

eric

Répondre à eriiic

19

BPAUD, le 11 mai 2008 à 19:53:42

Rebonsoir...
Existe-t-il une instruction de macro simple pour :
Une fois que l'on a posé un "select" sur une cellule,
Se déplacer de N lignes et M colonnes et effectuer une nouveau "select"
Les paramètres N et M figurent en cellules sur la feuille
????
Si je trouve ça je crois que je résoudrai mon problème à mon niveau de compétence.
Merci encore
B.

Répondre à BPAUD

20

eriiic, le 11 mai 2008 à 21:12:20

Oui, ti as .offset(lig,col) qui te recalcule ta référence.
Si lig =0 : même ligne, si lig >0 : déplacement vers le bas de lig lignes, si lig<0 déplacement vers le haut.
Si col=0 : même colonne, col>0 : à droite, col<0 à gauche.
Bien sûr l'offset doit faire rester dans les limites de la feuille.
Ex:
Range("B2").offset(1,2).select sélectionne la cellule D3
ou
Activecell.offset(0,3).value = "toto" met toto dans la 3ème cellule à droite que la cellule active, même ligne.

eric

Répondre à eriiic

23

BPAUD, le 12 mai 2008 à 04:49:32

Slt !
Merci encore!
Mais dans ton exemple, est-il possible que les décalages :
"1" et "2" dans ... Range("B2").offset(1,2).select
Soient "récupérés de contenus de cellules...
J'essaie mais ça n'a pas l'air de marcher... je m'embrouille ... cette fois c'est decidé, je vais me coucher
Merci et @+

Répondre à BPAUD

24

eriiic, le 12 mai 2008 à 09:57:09

Bonjour,

Bien sur que tu peux.
1 et 2 peuvent être des variables et donc des valeurs issues de cellules.
Ex avec ton offset colonne dans A1 : Range("B2").offset(1,[A1].value).select

Mais je pense que tu prends une mauvaise direction en récuperant l'offset dans une cellule. J'imagine mal le cas de figure où cela peut être nécessaire... Calcule plutôt ton offset dans une variable vba, le code sera plus facile à maintenir.
eric

Répondre à eriiic

25

michel_m, le 12 mai 2008 à 10:50:35

Bonjour Bernard, mike, Eric

Bernard,

Tu n'as pas besoin de faire quoique ce soit sur la feuille1

Comment utiliser le machin:

Dans la feuile2,
Tu saisis la référence en C7

1/ Si cette référence existe, les données correspondantes s'affichent et tu peux le modifier dans une cellules D7 à F7 suivies chacune de <entrée>
Ensuite, l'appui sur le bouton "Valider" inscrit les modifications éventuelles dans la base "feuil1"

2/ Si la référence n'existe pas, un message t'indique si tu veux la créer ou pas,
si c'est une erreur de saisie, la réponse "non" efface la clé "C7"
Si tu répond "oui" tu peux écrire les données dans chaque cellule suivie de <entrée>puis appuyer après sur "validation"
cette nouvelle référence sera portée sous la dernière ligne de la base.

Ci joint le classeur avec 2 p'tites améliorations et les formules inutiles supprimées

Michel

Répondre à michel_m

26

eriiic, le 12 mai 2008 à 11:09:06

Bonjour michel,

tu as oublié le lien...
eric

Répondre à eriiic

27

michel_m, le 12 mai 2008 à 11:36:22
Répondre à michel_m

28

BPAUD, le 12 mai 2008 à 18:39:41

Bonjour Eric et Michel.
J’ai dormi un peu…. et ai accompagné ma fille à la gare avec un XLS simplissime qui ne fait que 50% du « demandé » …
Voyons maintenant, au calme, si je peux être moins bête et progresser un peu.
Le petit tableau retourné fonctionne effectivement ! BRAVO Bernard (c’est moi) tu as au moins réussi à te faire comprendre ! … et MERCI à vous !
Donc ça marche ! … et maintenant, je fais comment moi pour rééditer la même chose dans mon classeur cible ???

Jusqu’à ce jour les seules choses que je savais plus ou moins faire étaient de manipuler quelques formules d’Excel… et de me créer quelques petites macros en ‘Automatique’ que j’associais avec un bonheur incertain à des icônes récupérées ici et là…
Parfois je créais ainsi qque macro fantôme et je revenais en mode ‘Modifier’ pour essayer de bricoler un peu… mais le résultat fut rarement au rendez-vous
Vous réaliserez que vous m’ouvrez un monde inconnu et quelque peu effrayant. Mais il va falloir tout prendre à la base et même si je suis avide de progresser (il n’y a pas d’âge pour ça) je suis qd même sceptique sur mes capacités à vous suivre dans ce monde étrange et fantasmagorique pour moi !!! ( ).

Si j’investigue le retour de Michel, je vois :
o depuis la feuille 1 ; Outil ;Macro = une macro [valider ]… donc modifier et j’affiche le code… je pense pouvoir (un jour ?) suivre
o Depuis la feuille 2 ; Outil ;Macro…idem
o Tjours depuis la feuille 2 Outil ; Microsoft script Editor … La PANIQUE ! ça, je n’y arriverai JAMAIS ! on oublie !
o Feuille 2 : Outil ;VBA ;… La même procédure [valider]…
o Comme ceci me parait tt de même insuffisant, je tâtonne un peu ferme cette fenêtre par inadvertance et HOP apparition en fenêtre d’un programme, visiblement associé au bouton de l’exemple. (Tiens au fait… mais comment il a fait pour le créer ce bouton ? jamais vu ça dans ma palette accessible Excel !)
o Ca, à défaut de pouvoir le générer ex-nihilo, et avec un peu de temps, je dois pouvoir comprendre et peut-être même un jour adapter et modifier…

Comme je vous disais, Dur, dur !
Mais je vais essayer d’être un élève acceptable…
Questions :
o Comment je fais pour créer un bouton ?
o Comment je crée une procédure telle que celle que tu m’as adressée ?
o Comment j’associe les deux ?

Ouais…. ca fait du taf !
Si le cas est désespéré… pas de honte ! Dites le ! J’assumerai sans aigreur… et en vous reconnaissant le beau mérite d’avoir essayé de m’aider dans la mesure de mes limites.
Vous savez je suis d’un temps où j’ai bricolé un peu de Basic sur des trucs qu’on appelait des « Sinclair »… ca avait 8ko de mémoire au mieux… oui je sais ! c’était contemporain des Frères Montgolfier… ( )…
Et Quoi qu’il advienne en retour : MERCI !

Répondre à BPAUD

29

michel_m, le 12 mai 2008 à 19:00:11

Salut Bernard,

hé, ho! doucement, Les Frères Montgolfier, c'est mon coin (Ardèche)... ;-))

L'excuse de ton âge ? ça ne tient pas, mon cher; j'en soufflerai 63 aux vendanges! je sais, l'anniversaire revient plus cher en bougies qu'en gâteau; enfin, bientôt la retraite et pas aux Antilles, hélas!

Amicalement,
Michel

Répondre à michel_m

30

BPAUD, le 12 mai 2008 à 19:09:41

Michel,
Désolé, il n'y avait pas tentative d'offense...
Si je parle des frères lumière, les Lyonnais vont râler, Niepce était de Chalons je crois...
Si peu que l'un de tes proches soit "pays" avec la ref. je vais encore manquer mon truc.
Si tu préfères on réfère à Lavoisier... Je sais plus d'où il était celui-la.
Coté bougies, je vois qu'a peu de choses près, on est ds le même wagon...
Sauf que je n'ai pas approché une ligne de code depuis presque 40 ans...

Ca va être dur !

Amicalement
Bernardl

Répondre à BPAUD

49

BPAUD, le 10 jun 2008 à 22:17:17

Bonsoir Michel,

Je n'arrive pas a te joindre....
J'avoue que je ne sais pas trop comment ça marche (;-)...
Il est vrai que ce thème doit être considéré comme clos

Je ne sais pas si tu te souviens de moi...
J'avais il y a quelque temps plusieurs problèmes ...
Dont l'enrichissement d'une base de données depuis un écran de saisie que tu avais résolu me semblait-il.
Depuis, j'ai cherché à régler mes autres Pbs et je croyais tenir le bon bout...
Je reprends donc ton exemple pour le mettre en pratique et là, pas de bol :
1- il semble qu'en dépit de ta déclaration : ""lig = .Range("B4:B1000").Find(Target).Row"" je ne puisse pas saisir d'enregistrement au delà de 9
2-j'essaie de comprendre comment adapter et notamment ajouter des champs supplémentaires à la saisie et ça ne fonctionne pas (j'ai pourtant ajouté Range("G7")=... au code en essayant de respecter la syntaxe que tu avais appliquée...
Range("D7") = .Cells(lig, 3)
Range("E7") = .Cells(lig, 4)
Range("F7") = .Cells(lig, 5)
Range("G7") = .Cells(lig, 6)

J'ai essayé de redeposer le fichier :

http://www.cijoint.fr/cjlink.php?file=cj200806/cijfU3AIKM.xls

Je suis perdu !
Merci

Répondre à BPAUD

50

 michel_m, le 11 jun 2008 à 10:13:32

Bonjour,

Beaucoup de boulot à la mine jusqu'à Jeudi ap-midi au + tôt...

Mais les autres forumeurs vont certainement t'aider!

A+
Michel

Répondre à michel_m

7

Mike-31, le 11 mai 2008 à 15:36:46

Salut BPAUD,

Si tu veux de l'aide, suis ta discution, et comme de l'a demandé notre ami michel_m mets sur le forum un exemple de ton problème.

http://www.cjoint.com/

Nous sommes trois membres à te proposer notre aide dont eriic et michel_m très actifs et appréciés du forum, que je salut au passage, alors fait un effort ou marque ton statut résolu si tu n'as plus besoin de nous, avec un petit merci au passage cela fait toujours plaisir

A+

Répondre à Mike-31

8

BPAUD, le 11 mai 2008 à 16:38:20

ReBonjour,
Je ne laisse personne tomber et j'apprécie votre aide !!!
Mais soit je ne comprends pas , soit je me sui s mal expliqué.... en tous cas, ça ne marche toujours pas.
J'ai effectivement du m'absenter qques heures mais auparavant, j'ai envoyé (ou du moins essayé de) un petit exemple....
Merci de votre aide, j'en ai rudement besoin !

B.

Répondre à BPAUD

9

michel_m, le 11 mai 2008 à 16:54:52

OK, BPAUD pour essayer de t'aider, mais ferme les autres demandes posées dans d'autres rubriques de ce forum:
c'est inutile;
peu élégant ( tu n'as pas confiance aux gens de cette rubrique?);
ça réduit l'efficacité des aides...

Michel

Répondre à michel_m

11

BPAUD, le 11 mai 2008 à 16:58:40

Visiblement je ne comprends pas comment la répartition de srubriques marche....
J'essaie de ne pas polluer mais visiblement c'est raté.
Je vais essayer de progresser.
J'ai essayé de renvoyer le fichier demandé
http://cjoint.com/?flq3Y2JORC
je renouvelle ici.
DESOLE !
Je m'applique....

Répondre à BPAUD

10

BPAUD, le 11 mai 2008 à 16:55:59
Répondre à BPAUD

15

michel_m, le 11 mai 2008 à 17:52:30

Proposition ci-jointe

http://cjoint.com/?flrYrfh8UA

pour voir le code principal, clic droit sur l'onglet feuille 2 et voir le code

validation des mùodifs ou nouvelle ref dans module1 de VBE

Michel

Edit:
1/ supprime les formules feuille1 !

2/ amélioration de la validation d'une création ou modif

Sub valider()
Sheets(1).Cells(lig, 2) = Range("C7")
Sheets(1).Cells(lig, 3) = Range("D7")
Sheets(1).Cells(lig, 4) = Range("E7")
Sheets(1).Cells(lig, 5) = Range("F7")
MsgBox " mise à jour effectuée dans la base de données"

End Sub

Marque dans le forum programmation que la discussion de ton pb a lieu dans le forum bureautique!

Répondre à michel_m

16

BPAUD, le 11 mai 2008 à 18:47:24

Merci Michel...
Sauf que je dois être ou nul ou trop crevé...
Ca ne marche pas : J'ai un message d'erreur en retour "Erreur d'execution 1004"
Merci qd même
@plus

Répondre à BPAUD

48

BPAUD, le 10 jun 2008 à 22:06:15

Bonsoir Michel,
Je ne sais pas si tu te souviens de moi...
J'avais il y a quelque temps plusieurs problèmes ...
Dont l'enrichissement d'une base de données depuis un écran de saisie que tu avais résolu me semblait-il.
Depuis, j'ai cherché à régler mes autres Pbs et je croyais tenir le bon bout...
Je reprends donc ton exemple pour le mettre en pratique et là, pas de bol :
1- il semble qu'en dépit de ta déclaration : ""lig = .Range("B4:B1000").Find(Target).Row"" je ne puisse pas saisir d'enregistrement au delà de 9
2-j'essaie de comprendre comment adapter et notamment ajouter des champs supplémentaires à la saisie et ça ne fonctionne pas (j'ai pourtant ajouté Range("G7")=... au code en essayant de respecter la syntaxe que tu avais appliquée...
Range("D7") = .Cells(lig, 3)
Range("E7") = .Cells(lig, 4)
Range("F7") = .Cells(lig, 5)
Range("G7") = .Cells(lig, 6)

J'ai essayé de redeposer le fichier :

http://www.cijoint.fr/cjlink.php?file=cj200806/cijfU3AIKM.xls

Je suis perdu !
Merci

Répondre à BPAUD

21

Mike-31, le 11 mai 2008 à 23:18:36

Salut,

Je me suis amusé à te faire des petites macros afin de te permettre de les comprendre.

bien sur il est possible de les écrire différemment et surtout plus condensé, mais c'est une bonne approche.

Si tu mets ta zone de recherche sur la même feuille voilz ce que ça peut donner.

Clic droit sur l'onglet de feuille1 pour voir le code associé au bouton et dans le BVA les macros avec les explications à chaque ligne après l'apostrophe '

http://cjoint.com/?flxrMpJIoJ

A+
____________________________________________________________­_____________

Vous cherchiez de l’aide. Les membres du forum, bénévolement étaient à vos côtés.
Ayez la gentillesse de nous dire si votre problème est résolu. Afin de classer la
Demande.

Répondre à Mike-31

22

BPAUD, le 12 mai 2008 à 02:11:05

Mike Merci!
J'ai jeté un oeil...
je suppose que je dois trouver mon bonheur...
mais je verrai eb détail plus tard... je suis trop crevé ... deux heures de sommeil seulement la nuit dernière ...
J'ai abandonné pour ma fille... trop tard !
Je re-essaierai plus tard pour essayer d'être moins C... la prochaine fois
En tous cas MERCI à TOUS !

Répondre à BPAUD

31

BPAUD, le 13 mai 2008 à 00:50:03

http://cjoint.com/?fnaWqqSXJX

Bonsoir Eric,
il semble que l'Offset sur contenu de cellule ne marche pas...
J'ai essayé de le decomposer en phases successives pour tenter de comprendre ...mais ???
Bernard

Répondre à BPAUD

32

eriiic, le 13 mai 2008 à 01:57:30

Sur ton exemple tes données d'offset sont en A2 et A3 et tu mets
Range("A1").Offset([E10], [E11]).Select qui sont vides...

et ajoute .value, c'est plus propre
Range("A1").Offset([A2].value, [A3].value).Select

eric

Répondre à eriiic

33

BPAUD, le 13 mai 2008 à 09:58:37

Bonjour,
J'ai essayé...
Mais la macro persiste à coller la valeur en A1... comme si l'Offset était ignoré.
@+

Répondre à BPAUD

34

eriiic, le 13 mai 2008 à 11:13:30

Bonjour,

parce que tu as mal essayé....
C'est la dernière ligne de ta macro qu'il faut corriger.

D'autre part tu as commencé à nettoyer les lignes inutiles (scrolling...) générées par l'enregistreur de macro.
C'est bien mais il faut aller encore plus loin.
L'enregistreur colle en pagaille des .select inutiles qui alourdissent le code, rendent la lecture difficile et en plus ralentissent considérablement.
De plus le copié/collé généré par la macro peut être avantageusement remplacé en fixant directement la valeur de la cellule.
Je t'ai ajouté 2 exemples qui font exactement la même chose que ton code.
Le 2nd ne ramene pas les valeurs d'offset dans la feuil1, c'est inutile sauf si tu estimes important que ce soit visualisable ici.
http://www.cijoint.fr/cjlink.php?file=cj200805/cijwgYBKjp.xl­s

Bonne continuation et surtout ne te décourage pas, même au bout de 5 ans tu en apprendras tjs sur excel.
eric

Répondre à eriiic

35

BPAUD, le 13 mai 2008 à 11:31:46

Eric
Merci pour ton aide !
Ton "test2" est superbe !
Maintenant ... question c...
Je fais comment pour créer un bouton dans ma 'vraie feuille' et y joindre une macro inspirée de ta proposition ?
désolé ... faut tout prendre à la base !!! (;-)))))
@plus, je vais tondre et je reviens ... il parait qu'il va pleuvoir cet aprem !

Répondre à BPAUD

36

eriiic, le 13 mai 2008 à 12:50:35

Tu écris ta macro puis menu 'affichage / barres d'outils... / formulaires'.
Clic sur le contrôle 'Bouton',
tu le dessines sur ta feuille avec un cliqué/glissé,
tu affectes le bouton à ta macro, validation
et tu édites le texte mis sur la bouton.

Répondre à eriiic

37

BPAUD, le 13 mai 2008 à 15:02:24

Eric,
Pardon...
J'allais oublier....
J'ai trois autres problèmes de départ avant de pouvoir jouer...
PB 1
Est-il possible de contourner l'apparente impossibilité de valider une donnée (choisir dans une table) listée en dehors de la feuille active?
J'ai en effet cru bien faire et j'ai groupé toutes mes tables dans un onglet (une feuille) unique ce qui me permet d'en assurrer la maintenance simple et centralisée, mais la limitation évoquée m'oblige à recopier (avec liaison bien sûr) toutes les tables dont j'ai besoin dans la feuille de 'travail'...

PB2
J'utilise souvent les fonctions 'RechercheV' et 'RechercheH' si pratique pour ramener des infos d'une feuille à l'autre... Cependant ceci a une limite apparente c'est que je ne sais ramener qu'une donnée!
Supposons en effet que dans une feuille2 je demande a ramener une info concernant une clé de recherche
Ainsi pour exemple, je veux ramener LA LISTE des voitures de AAA-Pierre.
RechercheV pointe à la première occurence trouvée en zone de recherche et me ramène l'info de cette ligne... Point
Je sais bien qu'en interactif le filtre auto donne réponse mais ce n'est pas l'objet...

PB3
J'utilise des critères en table qui sont parfois liés en 'filiation' nous pourrions dire qu'il y a des listes et des sous listes.
Comment faire pour que lorsque j'ai choisi le critère de niveau 1 (dans l'exemple ici, la Marque de voiture), la sélection du critère de niveau2 (modèle) ne me présente en liste à choisir que les choix valides en filiation...?

Ouais...ça fait peut-être beaucoup de sujets sur un seul message...
Ca doit pas être dans la chartre ça j'imagine....
Que dois-je faire?
J'ouvre trois nouveaux sujets ?
Ou...ça va comme ça ?
Ci-joint le fichier exemple...

http://www.cijoint.fr/cjlink.php?file=cj200805/cijpS7j9ES.xl­s


Cdlt
Bernard

Répondre à BPAUD

38

chtilou, le 13 mai 2008 à 17:37:21

Bonjour,

PB3
J'utilise des critères en table qui sont parfois liés en 'filiation' nous pourrions dire qu'il y a des listes et des sous listes.
Comment faire pour que lorsque j'ai choisi le critère de niveau 1 (dans l'exemple ici, la Marque de voiture), la sélection du critère de niveau2 (modèle) ne me présente en liste à choisir que les choix valides en filiation...?


Il faut nommer le groupe de cellule (niveau 2) par le nom de la marque (niveau 1).
Par exemple:
sélectionnez les marques puis nommer le groupe "marque"
sélectionnez les modèles puis nommer le groupe "mercedes" (l'orthographe doit être exactement celui du groupe "marque".

En cellule A1 "validation des données" "liste" =marque

en B1 "validation des données" "liste" =INDIRECT(A1)

Répondre à chtilou

39

BPAUD, le 13 mai 2008 à 17:47:33

Bonjour Chtilou,
Bien reçu mais pas satisfaisant :
Au moment de l’écriture, les « marques » ne sont pas encore connues, les « modèles » non plus d’ailleurs.
Ceci est renseigné par l’utilisateur à l’initialisation … et maintenu (élargi par exemple) au fil du temps.
C’est pour ça que je crée la feuille liens « Marques » -« Modèles » qui est enrichie au fil de l’eau également.
Je pense que la solution, si elle existe, doit probablement s’appuyer sur ce tableau … plus que sur les zones de tables de base….
Mais je vais regarder ta suggestion avec intérêt et notamment creuser du coté de l' "indirect".
Merci en tous cas
Bernard

Répondre à BPAUD

40

BPAUD, le 13 mai 2008 à 17:50:39

Re...
Je pense que si je règle le probléme 2...
Je dois pouvoir extraire en interactif les couples et créer ainsi des listes "filialisées" sur lesquelles je dois pouvoir m'appuyer...
Bernard

Répondre à BPAUD

41

chtilou, le 14 mai 2008 à 11:08:20

Bonjour Bpaud,

PB2 Ainsi pour exemple, je veux ramener LA LISTE des voitures de AAA-Pierre...

Voici une technique qui répond ta demande mais exige que la matrice soit triée alphabétiquement.

http://www.cijoint.fr/cjlink.php?file=cj200805/cijndXNOhh.xl­s

Répondre à chtilou

42

BPAUD, le 14 mai 2008 à 12:33:32

Bonjour Chtilou
Génial ton truc... C'est exctement ce que je cherchais...
J'ai juste modifié au niveau de C11 et C12 pour que ça 'démarre correctement' dès la 1ere ligne...

Voir : http://www.cijoint.fr/cjlink.php?file=cj200805/cijupS3bn0.xl­s

Il ne me reste plus qu'à poser une macro de tri au niveau de la matrice... et c'est nickel !
Je vais investiguer pour voir s'il ne reste pas un petit truc 'marginal' qui coincerait sur des cas un peu 'limite' mais a priori ca colle !

NOTA : Ce truc me semble répondre à quantités de questions identifiées ici et là sur les forums !
Bravo et Merci : PB2 RESOLU !
T'es TOP !

Répondre à BPAUD

45

BPAUD, le 14 mai 2008 à 14:43:34

Chtilou...
J'ai peaufiné ton truc, qui était déjà très chouette, mais qui obligeait à 'déclarer en matrice source autant de zones que de 'colonnes' que l'on souhaitait ramener...
Je définis une seule zone "large" (Source) dans la matrice...
J'utilise ton mode de calcul d'index
et j'utilise la bonne vieille RechercheV...
Je n'ai plus qu'a faire référer celle-ci au N° de col que l'on souhaite ramener ... et hop !
MERCI ENCORE, Je tiens MA Solution

Voir feuille X2 dans : http://www.cijoint.fr/cjlink.php?file=cj200805/cij7soS7x6.xls

Bernard

Répondre à BPAUD

46

chtilou, le 14 mai 2008 à 14:51:59

Affaire classée.
Bonne continuation.
Tiens nous informé sur la finalisation de ton projet.
Cordialement.

Répondre à chtilou

43

BPAUD, le 14 mai 2008 à 12:42:20

CHtilou, et les autres...
Pour résumer :

PB 1 :
Existe-t-il une possibilité pour vlalider une donnée sur liste (table) sans avoir a rapatrier (copier-liaison) les listes dans la feuille concernée (cas de tables centralisées pour Maintenance dans un seule feuille)
PB2
Rapatriement de N données répondant à un critère : RESOLU !

PB3
Filiation de listes (Listes et sous listes) pour validation de données : pas trouvé de réponse a priori satisfaisante

Cdlt
Bernard

Répondre à BPAUD

44

chtilou, le 14 mai 2008 à 14:13:50

Regarde si ceci te conviens mieux.
Si non redéfinis ton besoin. Je ne comprend pas très bien ce que tu recherches.

Répondre à chtilou

47

BPAUD, le 14 mai 2008 à 15:15:45

Oui certes, ceci marche....
Et avait été envisagé...
MAIS...
Les "marques et modèles" ne sont pas connus au départ...
Donc difficile de prevoir les 'colonnes' de la matrice de référence...
En fait il ne s'agit pas de voitures (c'était pour l'exemple) mais de "thèmes" et "modules" de formation qui s'enrichissent au fil de l'eau... A ce stade je pense qu'il peut y avoir une matrice de l'ordre de 30*50 possibilités ... (;-)) seulement...
En effet certain éléments des sous listes sont -en appellation au moins- les mêmes pour différents éléments de la liste de niveau 1.... ce qui réduit les listes ... mais PAS la taille des matrices possibles...
Ceci à multiplier par le nombre de versions (ce qui complexifie le truc car on passe au troisieme niveau de liste ; certains segments liés à des aspects légaux ou règlementaires peuvent varier par pays cible et au fil du temps ... (j'en ai un en tête qui en est à la version 32 ... dont 14 ou 15 sont toujours valides ...). "Pas glop"(*)!
(*) Si tu es djeun', tu connais surement pas (;-))))))

Cependant, GRACE A CE QUE TU M'AS AIDE A RESOUDRE PRECEDEMMENT....
Je pense que je vais pouvoir générer cette table automatiquement depuis une saisie quelconque... Au moins pour les deux premiers niveaux... après ...
A chaque jour suffit sa peine !
Etude en cours....
Je te tiendrai au courant.
Bernard

Répondre à BPAUD