IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

problème fonction vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Par défaut problème fonction vba
    Bonjour,

    Je suis nouveau sur ce forum, et aussi débutant en vba.
    J'ai créer cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Function espace()
    Dim i As Integer
    i = 2
    Do
    If Cells(1, i).Value <> "" Then
    i = i + 1
    Else: Exit Do
    End If
    espace = i
    Loop
    End Function
    Sur la page 1 elle fonctionne, mais dès que je vais sur une autre page elle me retourne 0, bien que la première ligne ne soit pas vide. J'aimerai comprendre pourquoi.

    Merci de vos réponses

    Stochastique

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 97
    Par défaut
    Salut stochastique,

    Voici ta fonction corrigée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function Espace(Cellule as Range) as Integer
        Dim i As Integer
        i = 0
        Do While Cellule.Offset(0,i) <> ""
            i = i + 1
        Loop
        Espace = i
    End Function
    J'ai donc fusionné tes 2 lignes "Do" et "If" en une seule, cela évite un "Else Exit Do".

    J'ai sorti la ligne "Espace = i" de la boucle. C'est inutile de mettre cette ligne dans la boucle et çà ralenti le programme (enfin dans ton cas, de pas beaucoup)

    Ensuite, le point important, j'ai créé une variable "Cellule" de type Range (c'est à dire une variable de type cellule excel). Il faudra donc que tu appelles ta fonction ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Espace Feuil1.Range("B1")
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Espace Feuil2.Range("B1")
    etc...
    Il faut que tu précises la feuille sur laquelle tu veux appliquer ta fonction.

    Offset(Ligne, Colonne) est une propriété de la variable de type Range. Cela permet d'effectuer des décalages par rapport à la cellule d'origine.

    Dernier Point, j'ai précisé que la fonction renvoie une donnée de type Integer (après les parenthèses). Tu n'avais rien précisé et ta fonction renvoyait par défaut une donnée de type Variant. Il faut savoir qu'une donnée de type Variant est beaucoup plus volumineuse qu'une donnée de type Integer, donc plus longue à traiter.

    Voilà, j'espère avoir réparé ton bug et avoir été clair dans mes explications. En tout cas, n'hésite pas si t'as des questions.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Par défaut
    Merci énormément Touffe54, très claire tes explications!!

    Je n'hésite pas à revenir si j'ai un autre problème...

    Stochastique

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Par défaut
    Ah j'ai une autre question,

    Lorsque les checkbox soient cochés, j'aimerai qu'il m'affiche le titre du checkbox,, j'ai donc tapé ce code, mais rien ne se passe, et aucune erreur!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub CommandButton1_Click()
    For i = 1 To 6
    If checkboxi = True Then
    Call Espace(Range("A1"))
    Cells(1, Espace(Range("A1"))).Value = checkboxi.Caption
    End If
    Next
    Unload UserForm1
    End Sub
    Quelqu'un aurait-il une idée?

    Merci beaucoup

    Stochastique

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    salut,

    tu aimerai qu'il t'affiche le titre de la checkbox ou ?
    Dans ta cellule A1 ? ou a la première case vide ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
    For i = 1 To 6
    If checkboxi = True Then
    Call Espace(Range("A1"))
    Cells(1, Espace).Value = checkboxi.Caption
    End If
    Next
    Unload UserForm1
    End Sub
    Je suis pas sur d'avoir compris mais essaye de modifier ça (le code en rouge).
    même si je ne suis pas vraiment convaincu que ça marche :p

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Par défaut
    En effet j'ai essaye et ça ne marche pas.
    Je souhaite ajouter le titre de la checkbox coché.
    La fonction espace, me permet d'ajouter ce titre à la cellule première colonne vide.

    J'espère avoir été assez clair

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] fonction vba excel problème avec hh:mm:ss
    Par chantalina dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/01/2010, 15h47
  2. [Vba-E]Problème fonction Date
    Par stargates dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/05/2007, 10h01
  3. [VBA] Problème fonction
    Par erfindel dans le forum VBA Access
    Réponses: 12
    Dernier message: 07/02/2007, 10h07
  4. VBA-Excel: problème fonction Roundup
    Par allergique dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2006, 21h24
  5. [VBA] problème fonction
    Par SNB dans le forum Access
    Réponses: 3
    Dernier message: 05/01/2006, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo