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 :

[XL-2010] Traduire fonction excel en VBA dans une macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [XL-2010] Traduire fonction excel en VBA dans une macro
    Bonjour à tous,

    j'ai cette fonction dans une feuille excel =GAUCHE(G2;CHERCHE("//";G2)-1)
    La colonne G contient des commentaires et j'utilise // pour séparer le dernier commentaire des précédents.
    La fonction ci-dessus me permet donc d'écrire dans la colonne H uniquement ce qu'il y a avant le séparateur.
    Cependant VBA ne m'accepte pas la syntaxe et me donne l'erreur suivante "sub ou fonction non définie"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim NombreCR As Integer
    Sub PrsReview()
        Dim Cellule As CellFormat
        NombreCR = ActiveWorkbook.Worksheets(1).UsedRange.Rows.Count
        MsgBox NombreCR
        For i = 2 To NombreCR
        Cellule = ActiveWorkbook.Worksheets(1).Cells(i, 7).Value
        ActiveWorkbook.Worksheets(1).Cells(i, 8) = gauche(Cellule, cherche("attendees", Cellule) - 1)
        Next i
    End Sub
    Pouvez-vous m'aider à finaliser ce code svp ?

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Le séparateur utilisé dans ton code n'a rien à voir avec celui annoncé "//". Fait un effort pour être clair et cohérent si tu veux des réponses adaptées.
    Pour évaluer une formule en vba on utilise evaluate(). Voir aide excel dessus.
    Utilise plutôt split(). Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Split([A2], "//")(0)
    eric

  3. #3
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Worksheets(1).Cells(i, 8) = Left(cellule, InStr(cellule, "attendees") - 1)

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre aide,

    en mettant ce code, j'ai une erreur de compilation "argument ou appel de procédure incorrect" à la ligne 8.
    je ne comprends pas quel argument ne convient pas. J'ai défini Cellule en tant que string au début.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim NombreCR As Integer
    Dim Cellule As String
    Sub PrsReview()
        NombreCR = ActiveWorkbook.Worksheets(1).UsedRange.Rows.Count
        MsgBox NombreCR
        For i = 2 To NombreCR
        Cellule = ActiveWorkbook.Worksheets(1).Cells(i, 7).Value
        ActiveWorkbook.Worksheets(1).Cells(i, 8) = Left(Cellule, InStr("//", Cellule) - 1)
        Next i
    End Sub

  5. #5
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    en écrivant cela et en placan un espion sur la ligne definissant la variable cellule, que ce passe t-il sur les deux autres lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Cellule = ActiveWorkbook.Worksheets(1).Cells(i, 7).Value
    a= Left(Cellule, 3)
    b= InStr("//", Cellule) - 1)   
    'ActiveWorkbook.Worksheets(1).Cells(i, 8) = Left(Cellule, InStr("//", Cellule) - 1)
    est ce que la variable cellule contient bien //
    et puis j'aurai plutôt ecris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub PrsReview()
    Dim NombreCR As Integer
    Dim Cellule As String
        For i = 2 To ActiveWorkbook.Worksheets(1).UsedRange.Rows.Count
        MsgBox i
        Cellule = ActiveWorkbook.Worksheets(1).Cells(i, 7).Value
        ActiveWorkbook.Worksheets(1).Cells(i, 8) = Left(Cellule, InStr("//", Cellule) - 1)
        Next i
    End Sub

  6. #6
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Autant pour moi, l'erreur est la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Worksheets(1).Cells(i, 8) = Left(Cellule, InStr(Cellule, "//") - 1)
    il n'empeche que le dimensionnement des variable est a mon avis, mal placé. Donc au final, on obtient cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub PrsReview()
    Dim i As Integer
    Dim Cellule As String
        For i = 2 To ActiveWorkbook.Worksheets(1).UsedRange.Rows.Count
        MsgBox i
        Cellule = ActiveWorkbook.Worksheets(1).Cells(i, 7).Value
        ActiveWorkbook.Worksheets(1).Cells(i, 8) = Left(Cellule, InStr(Cellule, "//") - 1)
        Next i
    End Sub

Discussions similaires

  1. [XL-2007] problème dans du code en VBA dans une macro
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/12/2010, 18h05
  2. Réponses: 0
    Dernier message: 11/01/2010, 10h49
  3. Inserer du code vba dans une macro
    Par gadget27 dans le forum Général VBA
    Réponses: 4
    Dernier message: 03/05/2007, 13h35

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