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 :

Fonction VBA Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    CFO
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : CFO
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut Fonction VBA Excel
    Bonjour,

    J'ai besoin de développer une fonction en VBA pour que ma feuille excel fasse la recherche suivante:
    (les deux colonnes à chercher sont faites de mots separés par des espaces)
    colonne 1 : prendre chaque mot chercher sa présence dans la colonne 2 , s'il y est renvoyer dans une autre colonne.
    Ceci autant de fois qu'il y est. (présent dans la colonne 2)
    et pour tous les mots de toutes les cellules de la colonne 1 contre tous les mots de toutes les cellules de la colonne 2.

    Ceci dit tous les mots superieurs à cinq lettres ce serait probablement plus efficace dans mon cas.

    Please!!

  2. #2
    Membre chevronné Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 352
    Par défaut
    Bonjour,

    Si tu comptes faire une fonction personnelle, cela ne sera pas adaptée car l'ensemble de ce qui est retourné par la fonction l'est dans une unique cellule (hormis si ton résultat est un assemblage de chaînes de caractères).
    http://silkyroad.developpez.com/vba/fonctions/

    Pour mieux comprendre ta problématique, illustres avec un exemple.

    Ce que j'ai compris :
    En case [A1] ="le jouet offert à Toto par sa maman"
    En case [B1] ="la maman de Toto dit à Toto de ranger ses jouets"
    La fonction située en [C1] renvoie "Toto 2 maman 1"
    C'est ça ?

    Bertrand (avec l'Iphone - donc pas simple de répondre)

  3. #3
    Candidat au Club
    Femme Profil pro
    CFO
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : CFO
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut complement de description
    oui c'est presque ça, ce que je recherche c'est une fonction qui me renvoie les toto et les mamans et les lignes auxquelles ils sont.
    Par exemple :
    première colonne première cellule : toto
    plus loin dans une ou plusieurs cellules de la même ligne mais d'une colonne différente : toto ligne 24 toto ligne 48 toto ligne 65.
    Pour chaque cellule et chaque mot de chaque cellule!
    et bien sûr il n'y a pas qu'un seul mot dans chaque cellule....
    ni dans la premièr ni dans la deuxième colonne.

  4. #4
    Membre chevronné Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 352
    Par défaut
    C'est à dire et pour suivre mon exemple :
    En [C1] = "Toto"
    En [D1] = "Toto"
    En [E1] = "maman"

    C'est bien ça ?

    Bertrand

    PS : tu pourrais au minima fournir un exemple du type de celui que j'invente... Un cas concret simplifie la vie

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Une procédure qui permet de lister tous les mots de la colonne A et d'inscrire les lignes contenant l'un de ces mots.
    Le résultat est récupéré en colonne M

    PS Il faut activer la référence Microsoft Scripting Runtime
    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
    '====================================================
    '/!\ Cocher la réference Miscrosoft Scripting Runtime
    '====================================================
    Sub Test()
    Dim MonDico As New Scripting.Dictionary
    Dim i As Long, j As Long, n As Long
    Dim TbSce, TbDes, Tmp
    Dim Res As String
    Dim k As Byte
     
    Application.ScreenUpdating = False
    With Feuil1
        TbSce = .Range("A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)
        For i = 1 To UBound(TbSce, 1)
            If TbSce(i, 1) <> "" Then
                Tmp = Split(TbSce(i, 1))
                For k = LBound(Tmp) To UBound(Tmp)
                    If Tmp(k) <> "" And Not MonDico.exists(Tmp(k)) Then MonDico.Add Tmp(k), 0
                Next k
            End If
        Next i
     
        TbDes = .Range("B2:B" & .Cells(.Rows.Count, "B").End(xlUp).Row)
        n = MonDico.Count
        ReDim TbSce(1 To n, 1 To 2)
        For i = 0 To n - 1
            For j = 1 To UBound(TbDes, 1)
                If InStr(UCase(TbDes(j, 1)), UCase(MonDico.Keys(i))) Then MonDico(MonDico.Keys(i)) = MonDico(MonDico.Keys(i)) & ", " & j + 1
            Next j
            Res = Mid(MonDico(MonDico.Keys(i)), 4)
            '=====Ici on peut adapter par exemple
            'TbSce(i + 1, 1) = MonDico.Keys(i)
            ' TbSce(i + 1, 2) = Res
            'Ou
            TbSce(i + 1, 1) = MonDico.Keys(i) & IIf(Res <> "", " (Lignes: " & Res & ")", " (Absent)")
        Next i
        Set MonDico = Nothing
        .Range("M2").Resize(n, 2) = TbSce
    End With
    End Sub

  6. #6
    Candidat au Club
    Femme Profil pro
    CFO
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : CFO
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut Procédure VBA
    Salut a vous deux,

    Merci pour la procédure, je vais voir ce que je peux faie avec.
    L'exemple de vie réelle :

    A | B

    Dossier Accident | Constitution
    Fiscal | Cession
    Cession | Accident

    J'aurais besoin que la fonction scanne la colonne A puis la B et me retourne qu'il y a un mot accident en ligne 3 dans la colonne B et un mot cession en ligne 2 dans colonne B.

    (le trait vertical matérialisant les deux colonnes différentes)

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. [XL-2002] Fonctions Vba Excel
    Par Floriang33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2009, 16h04
  3. [VBA-E] Calcul fonction VBA-excel
    Par I folima Elda dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/04/2008, 20h39
  4. Exécution d'une fonction VBA excel
    Par jekixu dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/12/2007, 09h39
  5. [VBA-E] Fonction VBA EXCEL Subtotal
    Par CléoB dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/09/2007, 16h32

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