VBA Excel : test sur une ligne sélectionnée [Résolu]

haplo67 31 Messages postés mercredi 4 janvier 2006Date d'inscription 4 juillet 2007 Dernière intervention - 16 juin 2006 à 17:45 - Dernière réponse : mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 16 juin 2006 à 19:23
3
Merci
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 !

Merci mortalino 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 16 juin 2006 à 17:56
0
Merci
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 !
Commenter la réponse de mortalino
galopin01 133 Messages postés lundi 4 octobre 2004Date d'inscription 14 octobre 2011 Dernière intervention - 16 juin 2006 à 18:48
0
Merci
bonsoir,

Sub test()
MsgBox Selection.Row 'renvoie toujours la première ligne sélectionnée
End Sub
A+
Commenter la réponse de galopin01
haplo67 31 Messages postés mercredi 4 janvier 2006Date d'inscription 4 juillet 2007 Dernière intervention - 16 juin 2006 à 18:51
0
Merci
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...
Commenter la réponse de haplo67
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 16 juin 2006 à 19:24
0
Merci
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 !
Commenter la réponse de mortalino
valtrase 936 Messages postés lundi 19 janvier 2004Date d'inscription 17 mars 2017 Dernière intervention - 16 juin 2006 à 20:26
0
Merci
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é
Commenter la réponse de valtrase
haplo67 31 Messages postés mercredi 4 janvier 2006Date d'inscription 4 juillet 2007 Dernière intervention - 17 juin 2006 à 00:02
0
Merci
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!
Commenter la réponse de haplo67
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 17 juin 2006 à 15:15
0
Merci
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 !
Commenter la réponse de mortalino

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.