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 :

Function dans un fichier xlam


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 262
    Par défaut Function dans un fichier xlam
    Bonjour,
    J'ai un fichier xlam dans lequel j'ai écrit une fonction.

    Lorsque j'appelle la fonction, rien ne se passe.
    Par contre en mode débogage, j'obtiens le résultat escompté.

    Ma fonction lit des données dans la feuille 1 (boucle sur les lignes jusqu'à la première ligne vide), c'est le feuille où j'appelle la fonction pour écrire dans la feuille 2

    A quoi cela peut-il être dû ?

    Merci pour votre aide

    Lydie

  2. #2
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 518
    Par défaut
    Bonjour,
    Sans plus d'informations cela va être difficile de vous aider.
    Au minimum poster :
    • Le code xlam
    • le code VBA qui traite tout cela

    Et question pourquoi passer par un xlam ? Vous ne parlez pas de script des fois ?

  3. #3
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 262
    Par défaut
    Bonjour,

    J'ai mis dans un fichier xlam pour que la fonction puisse être utilisée de n'importe quel fichier excel.

    Le code ressemble à ça.

    Dans mon fichier, j'appelle la fonction avec la formule : = F()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    Function F()
    Dim INI As String
    Dim l As Integer
     
     
    If Cells(1, 15) = "" Then
      INI= InputBox("Veuillez saisir vos initiales")
      Cells(1, 15) = UCase(NNI)
    Else
      Cells(1, 15) = UCase(Cells(1, 15))
    End If
     
    For a = 2 To 10000
      If Sheets(1).Cells(a, 1) = "" Then
        RedimColonne
        Exit Function
       End If
     
    txt =  Right("0" & Day(Now()), 2) & "/" & Right("0" & Month(Now()), 2) & "/" & Year(Now())
    txt = txt & Chr(10) & Chr(10)
    txt = txt & Right("00000" & Sheets(1).Cells(a, 6), 10) & Chr(10) & Chr(10)
     
     
     
     Sheets(2).Cells(a, 1) = "XX"
     Sheets(2).Cells(a, 2) = "XX
     Sheets(2).Cells(a, 3) = Right("00000" & Sheets(1).Cells(a, 6), 10)
     Sheets(2).Cells(a, 4) = "XX
     Sheets(2).Cells(a, 5) = "XX
     Sheets(2).Cells(a, 6) = Right("0" & Day(Now()) + 7, 2) & "/" & Right("0" & Month(Now() + 7), 2) & "/" & Year(Now() + 7)
     Sheets(2).Cells(a, 7) = "A traiter"
     Sheets(2).Cells(a, 8) = "XX
     Sheets(2).Cells(a, 8) = "XX
     Sheets(2).Cells(a, 12) = txt 
     Sheets(2).Cells(a, 13) = "XX"
     
     
     Next a
     
     
    End Function

  4. #4
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 324
    Par défaut
    Bonjour
    quelques remarques à la lecture du code
    - ligne 9 : INI ou NNI ?
    - lignes 27, 29, 30, 33, 34 il manque un "
    - pourquoi la ligne 4 : sauf erreur je ne vois aucun l dans le code
    Stéphane

  5. #5
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 262
    Par défaut
    Citation Envoyé par Raccourcix Voir le message
    Bonjour
    quelques remarques à la lecture du code
    - ligne 9 : INI ou NNI ?
    - lignes 27, 29, 30, 33, 34 il manque un "
    - pourquoi la ligne 4 : sauf erreur je ne vois aucun l dans le code
    Stéphane
    C'est une erreur en modifiant le code pour la publication

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Attention avec les formules perso, tu n'as pas les coudées franches... Il n'est pas possible de modifier d'autre cellule que la cellule qui contient la formule.
    Le fait que ça fonctionne en débogage est dû au fait que justement la fonction n'est pas déclenchée par la cellule mais par toi (elle est traité comme une fonction quelconque, plus comme une formule perso).

    Tu devrais développer un peu plus ce que tu cherches à faire pour qu'on puisse t'indiquer des voix.
    En plus je vois une boucle 2 à 1000 qui peut être remplacée par Range(..).End par exemple (à voir ce que contient redimcolonne mais ça me semble une mauvaise idée que d'appeler 50 fois cette fonction s'il y a 50 lignes vides. Il vaudrait mieux calculer le nombre de lignes vides et ensuite appeler redimcolonne (qu'il faudra peut-être adapter un peu)

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 518
    Par défaut
    Re,
    Quelques conseils :

Discussions similaires

  1. [XL-2013] Problème pour accéder aux données d'une feuille dans un fichier .XLAM
    Par Jack237 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/01/2017, 15h02
  2. Réponses: 4
    Dernier message: 20/01/2014, 15h06
  3. Fichier js ou function dans la page
    Par topolino dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/09/2009, 17h55
  4. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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