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 :

Utiliser un objet "wsExcel" ( worksheet) selon le choix d'un "Select Case"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 44
    Par défaut Utiliser un objet "wsExcel" ( worksheet) selon le choix d'un "Select Case"
    Bonjour tout le monde :
    En fait , je suis un peu débutant en VBA et j'ai besoin de votre aide . Il y a 3 jours , j'ai poster un truc pareil à celui là .
    Dans un classeur1 ( où le code existe) , dans la feuille "marketing" j'ai un tableau qui commence à partir de la ligne 6 qui contient 5 colonnes ( date , maturité , taux 1 , taux 2 , taux3 ) , et dans un classeur2 j'ai plusieurs feuilles , chacune correspond à une maturité ( "52 W" , "2 ans" , "10 ans" , .... ) .
    ce que je veux c'est que lorsque je saisi une date et une maturité et un taux 1 dans le tableau de la feuille "marketing" du classeur1 , le programme active (choisit) la feuille dans le classeur2 qui correspond à la maturité saisie dans la feuille "marketing" du classeur1 ,et il me cherche un taux2 et un taux3 qui correspondent à une date et un taux1 que j'ai saisie dans la feuille "marketing" du classeur1.

    Je suis encore entrain de faire la code, j'ai définis des variables "wsExcel" et "wbExcel" comme étant respectivement un worksheet et un workbook ( voir le code) et aussi une variable "lo" pour déterminer la position à partir de laquelle je remplie mon tableau du classeur1 .
    la valeur de cellule b1 dans le classeur2 change selon la maturité ( feuilles classeur2 ) .

    Mon problème c'est que dans la dernière ligne je veux normalement écrire un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wsExcel.Range("b1").Value = d
    ( wsExcel doit correspondre à une feuille de maturité ) mais la cellule b1 existe dans toutes les feuilles du classeur2 , et le choix de la feuille change selon ce qu'on a choisit dans maturité dans le classeur 1 , c'est dire je veux la valeur de la cellule b1 mais selon le résultat de "Select Case " . comment attribuer à la cellule b1 l'objet " worksheet" selon notre choix de la feuille maturité ? Aidez moi Svp et merci .
    Le code :
    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
    Dim d As Date
    Dim s As String
    Dim lo As Integer
    lo = Range(Range("a6"), Range("a6").End(xlDown)).Count
    lo = lo + 6
    s = Range("C", lo).Value
    Dim wbExcel As Excel.Workbook 'Classeur Excel
    Dim wsExcel As Excel.Worksheet 'Feuille Excel
    'Coorespond au classeur2
    Set wbExcel = Workbooks("classeur2")
     
     
    Select Case s
    Case Is = "52s"
        wbExcel.Worksheets("52 W").Activate
    Case Is = "2A"
        wbExcel.Worksheets("2 ans").Activate
    Case Is = "5A"
        wbExcel.Worksheets("5 ans").Activate
    Case Is = "10A"
      wbExcel.Worksheets("10 ans").Activate
    Case Is = "15A"
        wbExcel.Worksheets("15 ans").Activate
    Case Is = "20A"
       Worksheets("20 ans").Activate
    Case Is = "30A"
        wbExcel.Worksheets("30 ans").Activate
    End Select
    d = Range("A", lo).Value
     
    Range("b1").Value = d

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    quelque chose comme ça ?
    il manque la référence à une feuille dans ton code, il faut compléter

    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
    Sub hi()
    Dim s As String
    Dim lo As Integer
    Dim Wb As Workbook
    Dim Sh As Worksheet
     
    Set Wb = Workbooks("classeur2")
     
    ' quelle feuille ??
    lo = Cells(6, 1).End(xlDown).Row + 6
    s = Cells(lo, 3).Value
    If s = "" Then Exit Sub
     
    If s = "52s" Then
        s = "52 W"
    Else
        s = Mid(s, 1, Len(s) - 1) & " ans"
    End If
     
    On Error Resume Next
    Set Sh = Wb.Worksheets(s)
    Sh.Cells(1, 2) = Sh.Cells(lo, 1)
    On Error GoTo 0
     
    End Sub

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 44
    Par défaut
    Bonsoir ,

    En fait , j'ai pas bcp compris ce que vous avez publier . vous trouverez en pièces jointes les fichiers . Si vous pouvez maintenant relire mon poste pour bien comprendre mon objectif

    merci

    Classeur1.xlsxClasseur2.xlsx .

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Regarde si l'adaptation de ton code te convient (je n'ai rien testé) :
    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
     
    Sub Test()
     
        Dim wbExcel As Workbook 'Classeur Excel
        Dim wsExcel As Worksheet 'Feuille Excel
        Dim s As String
        Dim lo As Integer
     
        lo = ThisWorkbook.ActiveSheet.Range(Range("a6"), Range("a6").End(xlDown)).Count
        lo = lo + 6
        s = ThisWorkbook.ActiveSheet.Range("C", lo).Value
     
        'Correspond au classeur2 (qui doit être ouvert !)
        Set wbExcel = Workbooks("classeur2")
     
        Select Case s
     
            Case "52s"
                Set wsExcel = wbExcel.Worksheets("52 W")
            Case "2A"
                Set wsExcel = wbExcel.Worksheets("2 ans")
            Case "5A"
                Set wsExcel = wbExcel.Worksheets("5 ans")
            Case "10A"
                Set wsExcel = wbExcel.Worksheets("10 ans")
            Case "15A"
                Set wsExcel = wbExcel.Worksheets("15 ans")
            Case "20A"
                Set wsExcel = wbExcel.Worksheets("20 ans")
            Case "30A"
                Set wsExcel = wbExcel.Worksheets("30 ans")
     
        End Select
     
        wsExcel.Range("b1").Value = ThisWorkbook.ActiveSheet.Range("A", lo).Value
     
    End Sub
    Hervé.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 44
    Par défaut
    Bonjour tout le monde ,

    Voici le code que j'ai fait , je sais pas pourquoi ça marche pas .

    J'espère que la logique de mon programme est comprise .

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Sub Test()
     
    Dim wbExcel As Workbook 'Classeur Excel
    Dim wsExcel As Worksheet 'Feuille Excel
    Dim s As String
    Dim lo As Integer
     ' pour qu'il commence de remplir le tableau du classeur2 à partir de la cellule vide de la colonne F 
        lo = ThisWorkbook.ActiveSheet.Range(Range("f6"), Range("f6").End(xlDown)).Count
        lo = lo + 6
        s = ThisWorkbook.ActiveSheet.Range("C", lo).Value
     
        'Correspond au classeur2 (qui doit être ouvert !)
        Set wbExcel = Workbooks("classeur2.xls")
     
        Select Case s
     
            Case "52s"
                Set wsExcel = wbExcel.Worksheets("52 W")
            Case "2A"
                Set wsExcel = wbExcel.Worksheets("2 ans")
            Case "5A"
                Set wsExcel = wbExcel.Worksheets("5 ans")
            Case "10A"
                Set wsExcel = wbExcel.Worksheets("10 ans")
            Case "15A"
                Set wsExcel = wbExcel.Worksheets("15 ans")
            Case "20A"
                Set wsExcel = wbExcel.Worksheets("20 ans")
            Case "30A"
                Set wsExcel = wbExcel.Worksheets("30 ans")
     
        End Select
     
     wsExcel.Range("b1").Value= ThisWorkbook.ActiveSheet.Range("A",lo).Value
     ' Cette étape c'est pour la recherche du taux2 et taux3 dans classeur2
    Dim l As Integer
    l = wsExcel.Range(wsExcel.Range("a14"), wsExcel.Range("a14").End(xlDown)).Count
    Dim aa As Double
    Dim bb As Double
    Dim a As Integer
    Dim b As Integer
    Dim cost As Boolean
    cost = False
    Dim r As String
    r = Range("H", lo)
    If Mid(r, Len(r), 1) = "%" Then
    r = Mid(r, 1, Len(r) - 1) ' Ici c'est seulement pour ajuster l'écriture du taux 1 dans classeur1
    r = r / 100
    End If
     
    ' Copier les taux2 et taux3 qque j'ai trouvé dans le tableau du classeur1
    Dim i  As Integer
    For i = 1 To l
    If wsExcel.Range("a" & 13 + i).Value = r Then
    aa = wsExcel.Range("c" & 13 + i).Value
    bb = wsExcel.Range("d" & 13 + i).Value
     
    cost = True
    i = l + 1
    End If
    Next
    If cost = False Then
    MsgBox ("Verifier le taux1 que vous avez saisit")
    Else
    wsExcel.Range("f" & lo).Value = aa
    wsExcel.Range("g" & lo).Value = bb
    End If
    End Sub
    J'ai déja mis les deux fichiers en jointure dans le message qui précède . Merci

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 44
    Par défaut
    Bonjour tout le monde ,

    Svp est ce que quelqu'un peut tester le dernier code que j'ai fait , je sais pas ce qui ne marche pas .

    J'ai déjà envoyé les deux fichier en jointure .

    Merci.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 28/05/2008, 02h06
  2. [delphi 5,6,7] utiliser un objet dans une procédure
    Par wizdom dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2006, 15h38
  3. [PDO] Utiliser l'Objet de PHP pour gérer sa base de données
    Par Viau dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/01/2006, 18h16
  4. Utilisation d'objets pour imprimer
    Par alainvh dans le forum Composants VCL
    Réponses: 3
    Dernier message: 02/12/2004, 10h25
  5. utilisation d'objets ADO pour CMS sur POSTGRESQL7.3.2
    Par turbok dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 10/10/2003, 09h29

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