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 :

Rechercher une partie de cellule dans une autre feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 11
    Par défaut Rechercher une partie de cellule dans une autre feuille
    Bonjour !

    Je souhaiterais créer un tableau avec trois colonnes : la première colonne est une colonne avec des montants (en milliers d'euros de sorte qu'une cellule va typiquement être 2 500 KEUR). Ma deuxième colonne récupère un taux de change qui se trouve dans une autre feuille et la troisième colonne fait un produit des deux.

    Ce que j'ai fait, c'est que j'ai créé une fonction qui extrait la partie devise de ma cellule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function extractLetters(vRge As Variant, j As Long, k As Long)
    'extrait lettres
    Dim Texte As String
    Dim oReg As Object
    Set oReg = CreateObject("vbscript.regexp")
        With oReg
            .Global = True
            .IgnoreCase = True
            .Pattern = "\d"
            Texte = .Replace(vRge(j, k).Text, "")
        End With
    End Function
    Puis ensuite je fais un vLookUp qui est censé récupéré le taux de change associé au montant indiqué dans la cellule
    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
    Sub ComputeNumbers()
     
    Dim oWsh As Excel.Worksheet
    Dim oRg As Excel.Range
    Dim vTmp As Variant
    Dim j As Long
    Dim sName As String
     
    For Each oWsh In ThisWorkbook.Worksheets
    	Select Case sName
            	Case "Sheet 1"
                    Set oRg = oWsh.UsedRange
                    vTmp = oRg.Value
     
    		For j = LBound(vTmp) To UBound(vTmp)
    			vTmp(j + 1, 2) = Application.VLookup(extractLetters(vTmp(j + 1, 1)), "K" & ThisWorkbook.Worksheets("Taux de change").Range("A:B"), 2, False)
    		Next j
     
            	Case "Sheet 2"
                    Set oRg = oWsh.UsedRange
                    vTmp = oRg.Value
     
    		For j = LBound(vTmp) To UBound(vTmp)
    			vTmp(j + 1, 2) = Application.VLookup(extractLetters(vTmp(j + 1, 1)), "K" & ThisWorkbook.Worksheets("Taux de change").Range("A:B"), 2, False)
     
    		Next j
     
            	Case "Sheet 3"
                    Set oRg = oWsh.UsedRange
                    vTmp = oRg.Value
     
    		For j = LBound(vTmp) To UBound(vTmp)
    			vTmp(j + 1, 2) = Application.VLookup(extractLetters(vTmp(j + 1, 1)), "K" & ThisWorkbook.Worksheets("Taux de change").Range("A:B"), 2, False)
     
    		Next j
    	End Select
    Next
     
    End Sub
    Le seul problème c'est que quand je lance la sub ComputeNumbers() j'ai l'erreur "Argument non facultatif" quand il y a utilisation de la fonction extractLetters.

    Comme vous l'aurez remarqué, le code doit fonctionner pour les trois feuilles Sheet 1, Sheet 2 et Sheet 3, les taux de change se trouve dans la feuille "Taux de Change" sous le format EUR et non KEUR et enfin il faut garder les données de chaque feuille en tant que Variant.

    Voilà un grand merci par avance pour votre aide ! Je suis disponible si vous avez besoin de précisions !

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Trouve l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extractLetters(vTmp(j + 1, 1)) '1 argument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function extractLetters(vRge As Variant, j As Long, k As Long) 'Trois arguments demandés

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 11
    Par défaut
    oups ^^

    Merci !

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

Discussions similaires

  1. [XL-2007] InputBox pour sélectionner cellule ou une plage de cellules dans une feuille.
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/02/2014, 19h01
  2. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  3. recherche de la valeur maximum dans une série de cellules
    Par Lechette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/04/2008, 08h33
  4. copier une partie d´un fichier dans un autre
    Par makohsarah dans le forum Langage
    Réponses: 8
    Dernier message: 23/08/2006, 09h53
  5. [VBA-E]Copier une serie de cellules dans une autre feuille
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/03/2006, 17h23

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