Pause avant sélection de cellule

thomas60

XLDnaute Nouveau
Bonjour,

Je suis tout nouveau sur ce forum et novice dans l'utilisation du VBA. Grâce à la mine d'or que représente internet, et notamment ce site, j'ai pu m'auto former à l'utilisation du VBA sous excel, ce qui m'a permis de réaliser quasi intégralement le code que je désire réaliser.:cool:

Cependant, j'ai bien dit "quasi". En effet, mes recherches sur internet ne m'ont pas permis de déterminer comment insérer une pause dans l'exécution de la macro jusqu'à ce que l'utilisateur sélectionne une cellule. Il semblerait que la fonction doevents peut-être associé à Worksheet_SelectionChange, puisse me permettre de résoudre ce problème mais malheureusement, je n'y parviens pas. :mad:

Si jamais quelqu'un connaît la solution à mon problème, ça me retirerais une douloureuse épine du pieds, et ce dernier gagnerais ma reconnaissance éternelle :)

Merci d'avance
 

gbinforme

XLDnaute Impliqué
Re : Pause avant sélection de cellule

Si j'ai bien compris ta question tu devrais obtenir le résultat avec cette fonction :

Code:
reponse = Application.InputBox("choix", "titre", , , , , , 8)

Ceci demande à l'utilisateur de sélectionner une plage et te donne le résultat dans "reponse"
 

thomas60

XLDnaute Nouveau
Re : Pause avant sélection de cellule

Tout d'abord merci pour vos réponses rapide.
Cependant, je crois que je n'est pas été clair. Avec la fonction que vous me donner je peux entrer une valeur dans la boite de dialogue qui s'ouvre. Or, ce que je veux faire c'est arreté le code tant que l'utilisateur n'a pas sélectionner (par un clic) une cellule de la feuille excel. J'ai besoin que la cellule soit sélectionner car dans la suite du code interviennent des références relatives à cette cellule.
 

Softmama

XLDnaute Accro
Re : Pause avant sélection de cellule

Bonjour,

Le code fourni précédemment te permet de sélectionner à la souris les cellules désirées ou bien de rentrer les références de la plage (juste penser à déclarer la variable comme range) :
VB:
Dim plage as range
set plage = Application.InputBox("Quelle plage ?", , , , , , , 8)
plage.select
 

thomas60

XLDnaute Nouveau
Re : Pause avant sélection de cellule

@carcharodon-carcharias,
Malheureusement, je ne peux pas dévoiler mon code ici, vu qu'il s'agit d'un code réaliser dans le cadre de mon travail, c'est-à-dire confidentiel.

@Softmama,
Effectivement, cette fonction marche très bien et me permet de faire ce que je fais du moment ou je rentre l'adresse de la cellule au clavier. Ce que je préférerais serait de pouvoir cliquer directement sur la cellule en question
 

thomas60

XLDnaute Nouveau
Re : Pause avant sélection de cellule

Afin de résoudre tout problème de confidentialité, voici un exemple de mon code où j'ai enlevé les infos pouvant être confidentielles (nom des fichiers, leur chemins d'accès,...)

Tout d'abord je sélectionne une cellule, lance le code. Ensuite le code copie et colle différentes cellule positionné relativement par rapport à la première dans des cellules définis du fichier source vers le fichier arrivé

Windows("source.xls").Activate
ActiveCell.Offset(0, -1).Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("arrivé.xls").Activate
Range("C3").Select
ActiveSheet.Paste
Windows("source.xls").Activate
ActiveCell.Offset(0, 2).Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("arrivé.xls").Activate
Range("D3").Select
ActiveSheet.Paste
Reponse = MsgBox("voulez vous ajoutez d'autre données", vbYesNo)
If Reponse = vbYes Then

Une fois les données collées dans le fichiers arrivé, le code demande si l'utilisateur souhaite ajouter d'autre donnée. Le copier coller des données se déroule de la même façon que précédemment. Ces nouvelles données étant relative à une autre cellule préalablement sélectionnée par l'utilisateur. Ce qui donnerait par exemple:

Windows("source.xls").Activate
ActiveCell.Offset(X,X).Range("A1").Select "suivant l'adresse de la nouvelle cellule sélectionnée"
Application.CutCopyMode = False
Selection.Copy
Windows("arrivé.xls").Activate
Range("C4").Select
ActiveSheet.Paste
Windows("source.xls").Activate
ActiveCell.Offset(X, X).Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("arrivé.xls").Activate
Range("D4").Select
ActiveSheet.Paste

Ce qu'il me manque se situe entre les 2 parties de code ci dessus.

Malheureusement, je ne suis pas vraiment sur que ce soit plus clair avec le code
 

gbinforme

XLDnaute Impliqué
Re : Pause avant sélection de cellule

Bonjour thomas60

Si tu remplaces :

Code:
ActiveCell.Offset(X,X).Range("A1").Select "suivant l'adresse de la nouvelle cellule sélectionnée"
Application.CutCopyMode = False
Selection.Copy

par ceci, cela devrait fonctionner :

Code:
Dim plage as range
set plage = Application.InputBox("Quelle plage ?", , , , , , , 8)
Application.CutCopyMode = False
plage.copy

à noter que tu n'as pas à saisir tes cellules car tu peux très bien les sélectionner à la souris.
 

thomas60

XLDnaute Nouveau
Re : Pause avant sélection de cellule

Bonjour,

Tout d'abord merci à gbinforme et Softmama, votre fonction marche très bien, c'est juste le Application.ScreenUpdating = False qui me bloquait l’affichage. Pour moi c’est résolu!:D

Pour le reste,

« ce n'est pas un code mais un enregistrement via l'enregistreur de macro (un moulin à neurones) »

Il se trouve que je suis en stage de fin d’études et que dans 2 mois j’ai mon diplôme d’ingé spécialité mécanique :cool:, et oui la programmation c’est pas mon point fort :eek:. Ainsi, quand tu peux arriver à faire ce que tu veux avec l’enregistreur et que tu as mon niveau en vba pourquoi se prendre la tête à programmer :confused: Cependant j'admets qu'en tant que fin connaisseur du vba ça puisse te géner

Dans le cas présent, je ne peux pas me permettre d’utiliser seulement l’enregistreur. En effet, j’ai besoin d’utiliser une boucle for, tout comme des boites de dialogue, des compteurs, des if,… :p qui étaient déjà présents dans le reste du CODE que je n’ai pas jugé utile de te montrer ! :rolleyes:

« comme si nous allions faire du piratage (merci la confiance en XLD) » :(
Il ne s’agit pas de piratage, mais juste du nom de l’entreprise qui figure effectivement dans l’adresse et que je préfère cacher.

En tout cas tout ça pour dire heureusement il y a encore des gens comme gbinforme et Softmama à qui faire confiance pour répondre à des questions simples et précises. Merci pour votre aide ;)
 
Dernière édition:

thomas60

XLDnaute Nouveau
Re : Pause avant sélection de cellule

Bonjour,

De nouveau bloqué sur mon code, je reviens vous voir avant de ne plus avoir de cheveux^^
Mon problème est le suivant:
J'utilise le code précédent pour copier la valeur d'une cellule sélectionnée, or j’aurais de nouveau besoin de cette fonction, mais cette fois pour copier l’adresse de la cellule sélectionnée. J’ai essayé pleins de méthodes trouvées sur internet mais aucune ne m’as permis de récupérer l’adresse d’une cellule.

Merci,
 

thomas60

XLDnaute Nouveau
Re : Pause avant sélection de cellule

Bonjour,

J’ai essayé d’utiliser la fonction de pierrexld, mais ça ne marche pas, j’ai donc utiliser une recherche find pour retomber sur la cellule sélectionné (un peu capilotracté, je suis d'accord). En voici le code qui fonctionne :

Sub Testf()
Dim i As Integer
Dim x As String
Dim R, y As Range
Sheets("Feuil1").Activate
x = Application.InputBox("selectionner")
Set R = ActiveSheet.Range("1:20").Find(x)
Range(R.Address).Activate

Cependant, je voudrais effectuer ce test sur les différentes feuilles de mon classeur. Et dès que la valeur x est trouvée dans une cellule, resté sur cette feuille. J’ai donc fait appel à For each :
Dim x As String
Dim R As Range
Dim sh As Worksheet
Sheets("Feuil1").Activate
x = Application.InputBox("Selectionner")
For Each sh In Sheets
sh.Activate
Set R = ActiveSheet.Range("1:20").Find(x)
If R.Value = x Then
Exit For
End If
Next
Range(R.Address).Activate

Evidemment, ça ne fonctionne pas il me sort une erreur au niveau du set R ou du If R.Value = x Then.
Please help me
 

Statistiques des forums

Discussions
312 697
Messages
2 091 086
Membres
104 758
dernier inscrit
jKK