VBA Excel : test sur une ligne sélectionnée

Résolu
haplo67 Messages postés 31 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 4 juillet 2007 - 16 juin 2006 à 17:45
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 17 juin 2006 à 15:15
Bonjour à tous,

Je suis bloqué dans une application personnelle depuis le début de l'après-midi (ce qui est assez étonnant lorsqu'on arle de VBA, langage plutôt facile d'utilisation). Je vous explique :

- L'utilisateur veut modifier une ligne d'un fichier Excel
- Le programme lui demande de sélectionner (directement dans le fichier Excel par simple clic sur la ligne) la ligne qu'il veut modifier
- Une fonction booléenne macro parcourt toutes les lignes du fichier Excel (qui ne sont pas vides) et vérifie si la ligne est sélectionnée ou non et renvoie la valeur true si sélectionnée, et false si non-sélectionnée.

Voila mon problème, je n'rrive pas à faire le teste pour savoir si une ligne est sélectionnée ou non. Voici le code de la fonction que j'utilise :

Function chercheLigne() As Boolean
   Dim max As Integer


   max = 0

   'controle d'entree de boucle
   ligne = rowMin And max <= 1     'Avec rowMin première ligne du fichier Excel
                                                      'Et max <= 1 car je ne veut qu'un ligne sélectionnée
   While ligne <> rowMax               'rowMax : dernière ligne; les lignes suivantes sont vides

      If ThisWorkbook.Sheets("follow-up").Rows(ligne).EntireRow.Select Then
         chercheLigne = True
         GoTo suite
      Else
         chercheLigne = False
      End If

      'controle de sortie de boucle      ligne ligne + 1                           'Ligne chaque ligne du fichier Excel parcourue

   Wend
suite:
End Function

Voila, j'espère que quelqu'un pourra m'aider. Je vous remercie d'avance.

8 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 juin 2006 à 19:23
Alors essaie cette syntaxe :

If ThisWorkbook.Sheets("follow-up").Rows(ligne).EntireRow.Select Then
chercheLigne = True
MsgBox Selection.Row
GoTo suite
Else
chercheLigne = False
End If


Par contre si c'est une seule cellule qui est selectionnée, le numéro de la ligne s'affiche quand même.

(désolé pour le chercheLigne, j'avais pas vu que c'était le nom de ta fonction)

Ouais mais le mien est résistant mais ca fait + de 3 ans que je l'ai et mon ordi je ne l'éteinds jamais.

Par contre j'ai vu des tours muni d'un système de refroidissement à eau !!!
Perso, j'aurai pas confiance : eau + electricité = gros risque

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 juin 2006 à 17:56
Salut,

Tu peux déclarer dans les déclarations (tout en haut dans le code) ceci :

Public chercheLigne As Boolean

en fait, tu ne l'a pas déclaré. Et le fait de le déclarer en Public dans les déclarations, la variable sera accessible dans les autres procédures du module et dans les autres modules du projet.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 1
16 juin 2006 à 18:48
bonsoir,

Sub test()
MsgBox Selection.Row 'renvoie toujours la première ligne sélectionnée
End Sub
A+
0
haplo67 Messages postés 31 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 4 juillet 2007 2
16 juin 2006 à 18:51
Et bien chercheLigne est une fonction, tout comme rowMin et rowMax, et je n'ai pas déclaré ces deux dernières (pourtant elles fonctionnent). Et la variable ligne est déclarée en globale.

Mon problème se situe plutôt du coté de cette condition :

If ThisWorkbook.Sheets("follow-up").Rows(ligne).EntireRow.Select Then
chercheLigne = True
GoTo suite
Else
chercheLigne = False
End If

la première ligne me renvoie toujours la première ligne de mon fichier Excel, quelle que soit la ligne que je sélectionne. Je voudrais sélectionner une ligne, et après avoir cliqué sur un bouton "OK", qu'un msgbox s'affiche en me disant le numéro de la ligne sélectionnée (si la valeur de la fonction chercheLigne est "true"). Je ne sais pas si c'est vraiment clair...
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 juin 2006 à 19:24
AAAAHh

laisse tombé les trois dernieres lignes, ca fait parti d'un autre message que j'ai laissé (copier coller de ma signature mais je me suis loupé)

Encore désolé

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
16 juin 2006 à 20:26
Salut,
dis lis-tu tes posts !!!!!!!
Galopin a raison pas la peine de faire ta boucle pour tester si un ligne est sélectionnée.

Function ChercheLigne() As Boolean



With aplication
If .Selection.Rows.Count > 1 Then
    MsgBox "vous devez sélectionner une seule ligne"
    ChercheLigne = False
    Exit Function
ElseIf .Selection.Rows.Count = 1 Then
    ChercheLigne = True
ElseIf .Selection.Rows.count <= 0 Then
    ChercheLigne = False



End If



MsgBox .Selection.Row
End With
End Function

Cordialement, Jean-Paul  

______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
haplo67 Messages postés 31 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 4 juillet 2007 2
17 juin 2006 à 00:02
Merci à tous!

PS : valtrase, un petit conseil sois moins agressif, je suis reconnaissant à tout le monde pour ces réponses, mais la réponse de galopin ne fonctionne pas je l'ai essayé de 36000 manières différentes cet après midi et ca ne fonctionnait pas.

merci pour ta réponse mortalino!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
17 juin 2006 à 15:15
Salut haplo67. C'est cadeau, ça fait plaisir !

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
Rejoignez-nous