Macro pour positionner sur une cellule ?

Fermé
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012 - 11 mai 2008 à 03:53
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 11 juin 2008 à 10:13
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 ...

13 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 mai 2008 à 09:38
Pourrais tu être plus clair?
1
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 10:00
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.
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
11 mai 2008 à 09:42
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+
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 10:08
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
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 17:05
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.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 mai 2008 à 10:11
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)
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 17:09
Avez vous ... ou pas finalement recu mon anvoi de fichier exemple ?
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
11 mai 2008 à 10:46
Bonjour,

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

eric
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 17:17
http://www.cijoint.fr/cjlink.php?file=cj200805/cijrP51M55.xls
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
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 18:54
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 !
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210 > BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 19:12
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
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 19:53
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.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210 > BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 21:12
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
11 mai 2008 à 15:36
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.

https://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+
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 16:38
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.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 mai 2008 à 16:54
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
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 16:58
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é
https://www.cjoint.com/?flq3Y2JORC
je renouvelle ici.
DESOLE !
Je m'applique....
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 16:55
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 mai 2008 à 17:52
proposition ci-jointe

https://www.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!
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
11 mai 2008 à 18:47
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
0
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
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
11 mai 2008 à 23:18
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 '

https://www.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.
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
12 mai 2008 à 02:11
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 !
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
13 mai 2008 à 00:50
https://www.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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
13 mai 2008 à 01:57
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
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
13 mai 2008 à 09:58
Bonjour,
J'ai essayé...
Mais la macro persiste à coller la valeur en A1... comme si l'Offset était ignoré.
@+
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
13 mai 2008 à 11:13
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.xls

Bonne continuation et surtout ne te décourage pas, même au bout de 5 ans tu en apprendras tjs sur excel.
eric
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
13 mai 2008 à 11:31
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 !
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
13 mai 2008 à 12:50
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.
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
13 mai 2008 à 15:02
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.xls


Cdlt
Bernard
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522 > BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
13 mai 2008 à 17:37
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)
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012 > chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012
13 mai 2008 à 17:47
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
0
BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012 > chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012
13 mai 2008 à 17:50
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
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522 > BPAUD Messages postés 74 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 8 février 2012
14 mai 2008 à 11:08
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.xls
0