Selection de cellule après un while.

Résolu
cs_Tols Messages postés 16 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 19 juin 2006 - 15 juin 2006 à 16:32
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 19 juin 2006 à 20:22
Bonjour à tous !

je suis en train d'apprendre le Vb en même temps que la réalisation d'un projet et j'avoue me faire rattraper par le temps.
Mon problème est le suivant:

D'une part, je doit en fonction du choix d'un patient dans une combobox, parcourir sur une autre feuille une colonne où tous les noms y sont repetoriés.
Ensuite une fois le nom trouvé dans la colonne, je doit (en utilisant un collage spécial) copier dans un planning annuel toutes les horaires effectués dans le mois et affichés en ligne (2 colonnes et 4 lignes plus bas que le nom du patient).

Mon code:

Private Sub ComboBox1_DropButtonclick()

Dim I As Integer, j As Integer
Dim nom As String

nom = ComboBox1.Value
ComboBox1.Clear
I = 4

While Not IsEmpty(Sheets(1).Cells(I, 2).Value)
    ComboBox1.AddItem (Sheets(1).Cells(I, 2).Value)
    I = I + 1
Wend

ComboBox1.Value = nom

j = 7
While  Janvier.Cells(j, 2) = nom
          j = j + 1
Wend

Range(Cells(j + 4, 4), Cells(j + 5, 34)).Select
    Selection.Copy
   Annuel.Range("B8:C38").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
         Application.CutCopyMode = False

End Sub

Bon je pense que c'est du gros racolage d'une part et surtout (dumoins je l'espère pas) rempli d'anneries...
Je n'ai pas d'erreur apparente mais le problème doit deja venir du fait que le 'j' de ma selection doit être 7 et non la valeur prise avec mon incrémenntation, et mon problème reside justement ici :/
Je ne sais pas si j'ai été suffisament clair, en tout cas je vous remercie de l'intention que vous pourrez me porter.

Bye.

10 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
15 juin 2006 à 17:55
Salut,
Tiens testes ceci j'ai pas testé, mais ça devrais le faire
 Private Sub CommandButton2_Click()

  Private Sub ComboBox1_DropButtonclick()

    Dim Myrange As Range

    Dim I As Integer, j As Integer

    Dim nom As String

    nom = ComboBox1.Value

    ComboBox1.Clear

    I = 4

    While Not IsEmpty(Sheets(1).Cells(I, 2).Value)

      ComboBox1.AddItem (Sheets(1).Cells(I, 2).Value)

      I = I + 1

    Wend

    ComboBox1.Value = nom

    Set Myrange = ActiveSheet.Columns(2).Find(nom, LookIn:=xlValues)

    Myrange.Offset(4, 2).Resize(2, 31).Select

    Selection.Copy

    Annuel.Range("B8:C38").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

        False, Transpose:=True

    Application.CutCopyMode = False

  End Sub

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
3
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
15 juin 2006 à 16:52
Bonjour,
Si j'ai bien compris tu veux que j soit toujours égal à 7 alors pourquoi tu l'incrémente.
Je comprends pas bien ton probleme.

 Drikce 06
0
cs_Tols Messages postés 16 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 19 juin 2006
15 juin 2006 à 17:05
En fait, je parcours ma colonne '2' en vérifiant à chaque ligne si la valeur de la cellule est égale au nom selectionné dans ma combobox.
Et j'incrémente jusqu'à trouver la valeur égale (il la trouvera forcément, les valeurs de ma combobox et celles de la colonne sont liées). Et ensuite, c'est ici que je coince, selon la ligne 'j' correspondant au nom trouvé, je copie les cellules se trouvant 2 colonnes à droites et 4 lignes plus bas.

Par exemple, si le nom est trouvé en ligne 7, la macro me copie les cellules ("D11:AH12").
Si cette fois ci, le nom est trouvé en ligne 13, la macro me copie les cellules ("C17:AH18").

Ps: Effectivement mon incrémentation avec un pas de 1 n'est pas explicite, mes noms sur la colonne se trouve tous les 6 lignes ( une incrémentation 'j = j+6' aurai d'ailleurs fait l'affaire).

Voila, j'espere avoir éclairci un peu la chose :°
0
cs_Tols Messages postés 16 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 19 juin 2006
16 juin 2006 à 12:40
Bonjour valtrase, et merci de ta réponse.

Après avoir testé ta méthode, j'ai eu un petit problème sur cette ligne:




Myrange.Offset(
4
,
2
).Resize(
2
,
31
).Select

> Variable objet ou viariable de bloc With non définie.

J'ai donc tenté de remanier un peu l'initialisation de 'MyRange' et je tombe le plus souvent sur une message d'erreur concernant le Select de l'objet Range.
Ce qui est bizarre c'est qu'il définit à priori bien le 'MyRange'.
Je continue à faire des petits tests pour trouver l'origine, mais en tout cas, merci beaucoup pour ce code bien lisible et sans doute plus approprié.

Bye.
0

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

Posez votre question
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
16 juin 2006 à 19:52
Salut,
Y'a pas de raison .....
envoi moi ton code que j'y jette un coup d'oeuil

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_Tols Messages postés 16 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 19 juin 2006
19 juin 2006 à 10:03
Bonjour à tous, et salut valtrase.

Mon code est absolument identique au tiens concernant la recherche et le collage.
Petite précision sur laquelle j'aurais peut être du m'arrêter, la combobox dans la quelle on choisit le nom se trouve sur la feuille 'Annuel', là ou on colle les horaires.
Et la macro va donc chercher dans les feuilles correspondant au mois ces horaires.

valtrase si l'erreur persiste, désires-tu que je t'envoie tout mon code? mon appli? ou simple la feuille 'Annuel'.

Merci en tout cas pour l'interet, bye :)
0
cs_Tols Messages postés 16 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 19 juin 2006
19 juin 2006 à 12:30
Re bonjour, je me permet juste d'ajouter un nouveau post.
Le problème se situe tout simplement sur :

Set Myrange = Sheets(3).Columns(2).Find(nom, LookIn:=xlValues) 'ou remplacer Sheets(3) par Janvier
    Myrange.Offset(4, 2).Resize(2, 31).Select

il n'arrive pas à selectionner les cellules correspondant à la feuille n°3.
si je procède de cette façon,

Janvier.Select
Set MyRange = Activesheet.Columns(2).Find(nom, LookIn:=xlValues)
Myrange.Offset(4, 2).Resize(2, 31).Select

il arrive bien à identifier les cellules concernées et les coller, seulement j'aimerai ne pas passer par un Select. En supposant, que l'opération doit se faire pour chaque mois, cela risque de devenir un peu lourd à la longue (de voir l'écran spamer des feuilles différentes toutes les minutes :°).

Merci de vos réponses.
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
19 juin 2006 à 13:13
Re,
Pour sélectionner une feuille ou alors copier à partir d'une feuille tu fait
Tu peux donner soit un index de feuille soit les nommer noublie pas les guillemets. 
Sheets("Janvier").Activate ou
Sheets("Janvier").Range("A1").Value = Sheets("Toto").Range("A10").value
tu peu aussi utiliser le nom d'une plage:
ex: Set Maplage = Sheeets("Janvier").Range("A1:A10")
MaPlage.Value = Range(Sheets("Toto").Range("A1:A10).value

Concernant ton code si ça plante encore fait un .Activate dans ton code juste avant le Set MyRange =........

n'a de valeur que s'il est partagé
0
cs_Tols Messages postés 16 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 19 juin 2006
19 juin 2006 à 14:30
Re, encore Merci valtrase :)

Un dernier problème se pose... Malgré le 'DropButtonClick', la recherche ainsi que le collage s'opère dès que je clique sur la combobox et non une fois l'employé selectionné dans celle-ci. Conclusion, je ne peux pas selectionner d'autres employés, l'opération s'effectuant à chaque fois sur celui déjà present dans la comboBox :/
Avec un 'Click', ce me fait évidement tourner le prgramme en boucle ainsi qu'avec un 'Change' ou 'SelectionChange'.

Merci .
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
19 juin 2006 à 20:22
Re,
Tu as aussi le double clic maintenant si tu te prends trop la tête rajoute un bouton et modifie un peu ton code.

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0