kerjc
Messages postés5Date d'inscriptionvendredi 16 mai 2008StatutMembreDernière intervention20 mai 2008
-
16 mai 2008 à 16:38
kerjc
Messages postés5Date d'inscriptionvendredi 16 mai 2008StatutMembreDernière intervention20 mai 2008
-
20 mai 2008 à 12:39
bonjour à tous,
je commence à développer sous VBA excel et je ne réussis pas à trouver le numéro de la première ligne dans laquelle il y a un nombre.
si je ne suis pas clair :
pour chaque colonne, les première lignes comportent des titres, des explications sur les valeurs de la colonne...
et à partir d'une certaine ligne (qui n'est pas toujours la même pour toutes les colonnes), j'ai des nombres uniquement.
Je voudrais savoir comment créer une petite fonction dans laquelle je donne en argument le numéro de colonne, et qui me donne comme résultat : le numéro de la première ligne contenant un nombre.
merci de bien vouloir de guider (je commence la programmation et j'ai un peu de mal)
kerjc
A voir également:
Numéro de la première ligne dans laquelle il y a un nombre
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 20 mai 2008 à 10:37
Heeeee oups c'est ma faute
Il faut retirer les parenthèses et sa devrais être bon
En fait VB6 à une façon un peut zarb de géré les appels de fonction. Si des parenthèses sont présente une valeur de retour est envoillé si elle sont absente alors non. Voila tout (j'ai testé ce coup si et c'est bon )
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 16 mai 2008 à 17:00
Bonjour
Pour moi le plus simple est que tu fasse une fonction contenant une boucle testant une à une les données des ligne de cette colonne. A fin de savoir si la valeur est numérique il existe la fonction "IsNumeric" qui retourne vrais si la chaine passé à cette fonction est une valeur numérique faux si non.
kerjc
Messages postés5Date d'inscriptionvendredi 16 mai 2008StatutMembreDernière intervention20 mai 2008 16 mai 2008 à 18:20
si je peux faire gagner du temps à quelques uns, voici le code :
Public Function PremiereLigneNumerique(Colonne) As Integer
Dim Ligne As Integer
Ligne = 1
While IsEmpty(Cells(Ligne, Colonne))
Ligne = Ligne + 1
Wend
While (IsNumeric(Cells(Ligne, Colonne)) = False)
Ligne = Ligne + 1
While IsEmpty(Cells(Ligne, Colonne))
Ligne = Ligne + 1
Wend
Wend
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 19 mai 2008 à 12:27
Juste une petite remarque sur ta fonction :
Tu ne test pas le numéro de ligne, ce qui veut dire que si par malheur aucune de tes lignes n'es numérique dans cette colonne tu vas rencontré une erreur.
Place simplement une gestion d'erreur :
'8<--------------------------------------------------------------------------
Public Function PremiereLigneNumerique(Colonne) As Integer
On Error goto ErreurPremiereLigneNumerique
Dim Ligne As Integer
Ligne = 1
While IsEmpty(Cells(Ligne, Colonne))
Ligne = Ligne + 1
Wend
While (IsNumeric(Cells(Ligne, Colonne)) = False)
Ligne = Ligne + 1
While IsEmpty(Cells(Ligne, Colonne))
Ligne = Ligne + 1
Wend
Wend
PremiereLigneNumerique = Ligne
Exit Function '<- Quitte la fonction (n'arrive ici que dans le cas où aucune erreur n'est rencontré
ErreurPremiereLigneNumerique: 'Arrive ici en cas d'erreur
Err.clear() 'Supprime l'erreur (vue qu'elle est géré)
PremiereLigneNumerique = 0 'Ainsi si cette fonction te retourne 0 (ce qui est théoriquement impossible) c'est que ta colonne ne contient pas de données numérique
End Function
'-------------------------------------------------------------------------->8
Perso j'aurais plutôt vue une fonction comme sa :
'8<--------------------------------------------------------------------------
Public Function PremiereLigneNumerique(Colonne) As Integer
On Error goto ErreurPremiereLigneNumerique
Dim Ligne As Integer
Ligne = 1
While (IsNumeric(Cells(Ligne, Colonne).Text) = False) 'Le ".Text" te permet de récup une chaine vide si la cellule est vide et non la valeur "Empty" (qui est numérique)
Ligne = Ligne + 1
Wend
PremiereLigneNumerique = Ligne
Exit Function '<- Quitte la fonction (n'arrive ici que dans le cas où aucune erreur n'est rencontré
ErreurPremiereLigneNumerique: 'Arrive ici en cas d'erreur
Err.clear() 'Supprime l'erreur (vue qu'elle est géré)
PremiereLigneNumerique = 0 'Ainsi si cette fonction te retourne 0
(ce qui est théoriquement impossible) c'est que ta colonne ne contient
pas de données numérique
kerjc
Messages postés5Date d'inscriptionvendredi 16 mai 2008StatutMembreDernière intervention20 mai 2008 20 mai 2008 à 09:59
salut,
tout d'abord, merci d'avoir pris le temps de regarder mon code. Je suis toujours avide de conseils car je débute vraiment. La preuve : je ne sait pas gérer les erreurs...
Du coup, j'ai copié-collé ton code à la place du mien, mais j'ai un problème lors de la compilation : le message dit qu'il y a un problème de syntaxe.
La ligne qui pose problème est Err.clear() à priori.
Je ne sais pas si cela peut avoir un rapport, j'ai vb6, est-ce qu'on a des versions compatibles?