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

sossso -  
sossso Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -
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
ws.Excel.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 attribué à la cellule b1 l'objet " worksheet" selon notre choix de la feuille maturité ? Aidez moi Svp merci .

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


EDIT: Précision du langage dans la coloration syntaxique.
A voir également:

16 réponses

ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonsoir Sossso, bonsoir le forum,
  • Quel est le format de la date ? Est-il toujours le même tant dans l'onglet Marketing que dans les autres ?
  • Dans quelle colonne de l'onglet correspondant à la maturité doit-on chercher la date ?
  • Dans quelle colonne de l'onglet correspondant à la maturité doit-on chercher le taux 1 ?
  • Dans quelles colonnes se trouvent les taux 2 et 3 ?

Quand tu fourniras ces quelques réponses je pourrais finir le code événementiel Change ci-dessous :

Private D As Date 'déclare la variable D (date)
Private O2 As Worksheet 'déclare la variable O2 (Onglet 2)

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet (Marketing)
Dim CL2 As Workbook 'déclare la variable CL2 (CLasseur 2)

Set CL2 = Workbooks("classeur2.xlsx") 'définit le classeur CL2 (extension à définir/vérifier !)

If Target.Row <= 6 Then Exit Sub 'si le changement a lieu avant la ligne 7, sort de la procédure
Select Case Target.Column 'agit en fonction de la colonne de la cellule éditée
    Case 1 'cas 1 (=colonne A)
        d = Target.Value 'définit la date d
    Case 2 'cas 2 (=colonne B)
        On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
        Set O2 = CL2.Sheets(Target.Value) 'définit l'onglet O2 (génère une erreur si cet onglet n'existe pas)
        If Err <> 0 Then 'condition : si une erreur a été générée
            Err.Clear 'supprime l'erreur
            MsgBox "L'onglet " & Target.Value & " n'existe pas ! Veuillez retaper la maturité." 'message
            Target.ClearContents 'efface le contenu de la cellule en colonne B
            Target.Select 'sélectionne la cellule en colonne B
            Exit Sub 'sort de la procédure
        End If 'fin de la condition
        On Error GoTo 0 'annule la gestion des erreurs
    Case 3 'cas 3 (=colonne C)
        If d <> 0 And Not O2 Is Nothing Then 'condition : si la date n'est pas nulle et si O2 existe
            Set R = O2.Columns(1).Find(d, , xlValues, xlWhole) 'recherche la date d dans la colonne 1 de l'onglet O2 (à adapter)
            If Not R Is Nothing Then
                '... attendant tes réponses
            End If
            'target.Offset(0,1).Value=...
            'target.Offset(0,2).Value=...
        End If
End Select
End Sub


Il agit automatiquement à la saisie dans l'onglet Marketing si les conditions le permettent...
Les deux fichiers exemple seraient les bienvenus !...
0
sossso Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   1
 
J'ai pas bcp compris votre démarche Thau Theme . Svp comment je peux joindre les deux fichiers ?
0
sossso Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   1 > sossso Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
Sinn si vous me donnez votre adresse email ; je peux vous les envoyer . Merci
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Sossso, bonjour le forum,

Voir, par exemple, https://www.cjoint.com/

0
sossso Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour ThauTheme , bonjour tt le monde ,

Vous trouverez ci joint les deux classeurs .

mon objectif , c'est que je tape dans le tableau du classeur1 : la date , la maturité et le taux1 et lorsque j'execute , le programme se dirige vers la feuille du classeur2 qui correspond à la maturité choisie ( 52s -> " la feuille 52 W " ; 2A -> " la feuille 2 ans " ; ...etc ) ,et dans la feuille choisit la cellule B1 reçoit la date tapé dans le classeur1 ( dans le classeur2 , le taux2 et taux3 changent selon la date ) , et cherche le taux2 et taux3 qui correspondent au taux1 choisit dans le classeur1 , et il fait copié du taux2 et taux3 trouvé , dans leurs places dans le tableau du classeur1 . J'espère que c'est compris . merci

https://www.cjoint.com/?0Etk3G4qrlA ' classeur 1
https://www.cjoint.com/?0EtljNTrQXh ' classeur 2
0
sossso Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour Thau Theme , 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 .

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


Merci .
0
sossso
 
Bonjour tout le monde , Svp si quelqu'un peut m'aider je suis bloqué :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonsoir Sossso, bonsoir le forum,

Avec tes deux fichiers j'ai pu terminer le code que j'avais commencé.
Le classeur1 contenant du code a désormais l'extension .xlsm.

Comment ça marche ?
  • Tu ouvres les deux classeurs
  • Tu actives le Classeur1 et l'onglet Marketing
  • Tu tapes une date valide dans la colonne A
  • Tu tapes la maturité dans la colonne C. Attention ! Elle doit correspondre exactement au nom de l'onglet du Classeur2 (soit tu renommes les onglets, soit tu tapes le même nom).
  • Tu tapes le Taux 1 dans la colonne H et...

Le code agit, les colonnes F et G se remplissent (si le Taux 1 existe...)

Le code est commenté. il se trouve dans deux endroits différents. Si tu dois le recopier il te faut impérativement recopier dans les deux mêmes endroits qui sont :
Le module standard Module1 qui contient les variables publiques.
Le composant Feuil1(Marketing) qui contient la procédure Change qui agit automatiquement. Ne pas oublier la variable TEST en première ligne...

Le code du Module1 :

Public D As Date 'déclare la variable D (Date)
Public O2 As Worksheet 'déclare la variable O2 (Onglet 2)
Public TC As Variant 'déclare la variable TC (Tableau de Cellules)

Le code de l'onglet Feuil1(Marketing)

Private TEST As Boolean 'déclare la variable TEST

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet (Marketing)
Dim CL2 As Workbook 'déclare la variable CL2 (CLasseur 2)
Dim I As Integer 'déclare la variable I (Incrément)

If TEST = True Then Exit Sub 'si TEST est [Vrai], sort de la procédure
If Target.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure
If Target.Row <= 5 Then Exit Sub 'si le changement a lieu avant la ligne 6, sort de la procédure
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set CL2 = Workbooks("classeur2.xlsx") 'définit le classeur CL2 (génère une erreur si ce classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    MsgBox "Le classeur " & Chr(34) & "classeur2.xlsx" & Chr(34) & " n'est pas ouvert ! Veuillez l'ouvrir." 'message
    TEST = True 'définit la variabler TEST
    Target.ClearContents 'efface le contenu de la cellule en colonne A
    Target.Select 'sélectionne la cellule en colonne A
    TEST = False 'réinitialise la variable TEST
    Exit Sub 'sort de la procédure
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Select Case Target.Column 'agit en fonction de la colonne de la cellule éditée
    Case 1 'cas 1 (=colonne A)
        If Not IsDate(Target.Value) = True Then
            MsgBox "Date non valide !Veuillez recommancer."
            TEST = True 'définit la variabler TEST
            Target.ClearContents 'efface le contenu de la cellule en colonne A
            Target.Select 'sélectionne la cellule en colonne A
            TEST = False 'réinitialise la variable TEST
            Exit Sub 'sort de la procédure
        End If
        D = Target.Value 'définit la date D
        Target.Offset(0, 2).Select 'sélectionne la celllue en colonne C
    Case 3 'cas 2 (=colonne C)
        On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
        Set O2 = CL2.Sheets(Target.Value) 'définit l'onglet O2 (génère une erreur si cet onglet n'existe pas)
        If Err <> 0 Then 'condition : si une erreur a été générée
            Err.Clear 'supprime l'erreur
            MsgBox "L'onglet " & Chr(34) & Target.Value & Chr(34) & " n'existe pas ! Veuillez retaper la maturité." 'message
            TEST = True 'définit la variabler TEST
            Target.ClearContents 'efface le contenu de la cellule en colonne C
            Target.Select 'sélectionne la cellule en colonne C
            TEST = False 'réinitialise la variable TEST
            Exit Sub 'sort de la procédure
        End If 'fin de la condition
        On Error GoTo 0 'annule la gestion des erreurs
        'définit le tableau de cellules TC (le tableau dans l'onglet correspondant à la maturité)
        TC = O2.Range("A13").CurrentRegion.Resize(, 4)
        O2.Range("B1").Value = D 'renvoie la date D dans la cellue B1 de l'onglet O2
        Target.Offset(0, 5).Select 'sélectionne la celllue en colonne H
    Case 8 'cas 8 (=colonne H)
        If Not O2 Is Nothing Then 'condition 1 : si l'onglet O2 existe
            For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau de cellues TC (en partant de la seconde)
                'condition 2 : si la valeur du taux 1 est égale à la valeur ligne I colonne 1 de TC
                If Target.Value = TC(I, 1) Then
                    Target.Offset(0, -2).Value = TC(I, 3) 'récupère en colonne F la valeur ligne I colonne 3 de TC
                    Target.Offset(0, -2).NumberFormat = "0.000%" 'format de la cellule
                    Target.Offset(0, -1).Value = TC(I, 4) 'récupère en colonne G la valeur ligne I colonne 4 de TC
                    Target.Offset(0, -1).NumberFormat = "0.00000000%" 'format de la cellule
                    TEST = False 'réinitialise la variable TEST
                    D = 0 'initialsie la date D
                    Set O2 = Nothing 'vide la variable O2
                    Erase TC 'efface le tableau de cellules TC
                    Cells(Target.Row + 1, 1).Select 'sélectionne la première cellule de la ligne en-dessous
                    Exit Sub 'sort de la procédure
                End If 'fin de la condition 2
            Next I 'prochaine ligne de la boucle
        End If 'fin de la condition 1
End Select 'fin de l'action en fonction de la colonne d ela cellule éditée
End Sub


Le fichier, Classeur1.xlsm
0
sossso
 
Bonjour Thau Them , bonjour tout le monde ,

Merci énormément ThauYhem le code marche bien , sauf que je sais pas si il y a une possibilité que l'ordre de l'entrée des informations ne soit pas important . c'est à dire que ça soit pas nécessairement la date qu'on fait entrer en premier , pour que ça soit plus pratique .
Aussi j'ai des petites questions Thau Them :
est ce que je peux savoir comment , les cellules de G et F se remplissent sans ajouter un bouton qui exécute la procédure ?
est ce que je peux recopier le code dans un autre module autre que moduele 1 ?parce que dans le fichier ou je veux recopier le code , le module 1 est déjà plein.

Est que le fichier classeur 1 peut être en extension xls ?

Dans l'attente de votre réponses . Je vous remercie encore une fois .

Cordialement .
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Sossso, bonjour le forum,

Plusieurs questions donc plusieurs réponses :
  • Pour l'ordre : pas sûr que ça marche car je n'ai pas testé... Teste et tu me diras après (c'est couillon de poser la question sans avoir testé toi-même)... Si cela ne marche pas et te pose un problème, on peut remplacer la méthode et mettre un bouton (tu me diras)...
  • Excel offre la possibilité d'utiliser ce que l'on appelle des Macros Événementielles. Comme le nom l'indique, elles réagissent automatiquement à certains événements (Change, SelectionChange, Calculate, Activate, etc.) et ne sont disponibles que dans certains composants (feuilles et Thisworkbook). Dans ton cas, j'ai utilisé la procédure Change dans le composant Feuil1(Marketing). Chaque fois que tu édites/modifies/effaces une cellule de cet onglet la procédure Change est lancée. Comme je t'ai dit plus haut, si cela ne te convient pas, on peut remplacer par un bouton. Pour le reste, fait l'effort de lire les commentaires et tu comprendras mieux. N'oublie pas, quand tu as besoin d'aide sur un mot clé que tu ne comprends pas, de le sélectionner et d'appuyer sur la touche [F1]...
  • Tu peux recopier dans n'importe quel module standard mais il faut que tu le fasses complètement en haut (les premières lignes du module). Éventuellement sous Option Explicit si tu l'utilises...
  • Pas de problèmes avec un classeur .xls. J'ai pas testé mais ça devrait marcher.



À plus,
ThauTheme
0
sossso
 
Merci pour votre réponses Thau them ,

En fait , j'ai testé le fait de ne pas faire entrer la date en premier et cela n'a pas marché . Donc si il y a une possibilité de mettre un bouton dans la feuille marketing ça sera mieux .

En plus , j'aurai aimé que si c possible d'exécuter ce programme non seulement pour une seule ligne mais pour plusieurs lignes en même temps , même si on a le même taux1 dans toutes le lignes . ça sera plus pratique pour moi , bien sur s'il y a une possibilité .

A part ça je pense que le code est compris . Merci Thau them

Cordialement
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
0
sossso
 
c'est pas une façon de parler monsieur . C'est seulement parceke j'ai pas eu de réponse rapide que j'ai essayé de voir quelqu'un d'autre monsieur , car j'étais un peu pressé monsieur . j'essaye seuelemnt d'apprendre . pas comme vous etes entrain de suivre qu'est ce que les gens fassent .
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Sossso, bonjour le forum,

D'abord un petit aparté concernant le post précédent de Michel.

Comme lui je n'aime pas voir la même question dans plusieurs forum différents. Parce que d'une part ça donne l'impression que tu mets les gens en compétition et, pour ma part j'ai horreur de ça. Mais aussi et surtout, il est très fréquent que quand tu as obtenu ta réponse dans un des forums tu ne te donnes même pas la peine de remercier dans les autres forums.
Sache, Sossso, que certains forums n'acceptent pas et suppriment le post.
Mais je peux comprendre aussi le coté du demandeur qui désire une réponse et s'adresse à plusieurs forums pour augmenter ses chances...
L'important est que tu sois étique et que, après avoir obtenu ta réponse, tu ailles remercier TOUS les forums dans lesquels tu as posté.

Mais si tu fais le genre de réponse que tu viens de faire, il est évident que tu vas te griller partout. Je suis désolé de te dire que ta réponse n'est vraiment pas une façon de parler (comme tu le dis toi-même). Quand on a tort, la moindre des choses c'est de s'excuser ou de se faire petit mais pas d'apostropher les gens...

je clos l'aparté.

Dans le nouveau fichier avec un bouton, le code se trouve dans un seul endroit : Feuil1(Marketing) :

Private Sub CommandButton1_Click() 'bouton "Taux"
Dim TD As Variant 'déclare la variable TD (Tableau des Données)
Dim CL2 As Workbook 'déclare la variable CL2 (CLasseur 2)
Dim I As Integer 'déclare la variable I (Incrément)
Dim D As Date 'déclare la variable D (Date)
Dim O2 As Worksheet 'déclare la variable O2 (Onglet 2)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim J As Integer 'déclare la variable J (incrément)

ActiveCell.Select 'enlève le focus au bouton
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
TD = Range("A6:A" & Range("A" & Rows.Count).End(xlUp).Row).Resize(, 8) 'définit le tableau de données TD
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set CL2 = Workbooks("classeur2.xlsx") 'définit le classeur CL2 (génère une erreur si ce classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    MsgBox "Le classeur " & Chr(34) & "classeur2.xlsx" & Chr(34) & " n'est pas ouvert ! Veuillez l'ouvrir." 'message
    Exit Sub 'sort de la procédure
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs

For I = 1 To UBound(TD, 1) 'boucle 1 : sur toutes les ligne I du tbaleau de données TD
    If IsDate(TD(I, 1)) = False Then 'condition : si la date en ligne I colonne 1 de TD n'est pas valide
        MsgBox "Date non valide !Veuillez recommencer." 'message
        Cells(I + 5, 1).ClearContents 'efface le contenu de la cellule correspondante en colonne A
        Cells(I + 5, 1).Select 'sélectionne la cellule correspondante en colonne A
        Exit Sub 'sort de la procédure
    End If 'fin de la condition
    D = TD(I, 1) 'définit la date D
    
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    Set O2 = CL2.Sheets(TD(I, 3)) 'définit l'onglet O2 (génère une erreur si cet onglet n'existe pas)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'supprime l'erreur
        MsgBox "L'onglet " & Chr(34) & Target.Value & Chr(34) & " n'existe pas ! Veuillez retaper la maturité." 'message
        Cells(I + 5, 3).ClearContents 'efface le contenu de la cellule correspondante en colonne C
        Cells(I + 5, 3).Select 'sélectionne la cellule correspondante en colonne C
        Exit Sub 'sort de la procédure
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    
    TC = O2.Range("A13").CurrentRegion.Resize(, 4) 'définit le tableau de cellules TC
    O2.Range("B1").Value = D 'renvoie la date D dans la cellue B1 de l'onglet O2
    For J = 2 To UBound(TC, 1) 'boucle 2 : sur toutes les lignes J du tableau de cellules TC (en partant de la seconde)
        'condition : si la valeur du taux 1 (ligne I colonne 8 de TD) est égale à la valeur ligne J colonne 1 de TC
        If TD(I, 8) = TC(J, 1) Then
            Cells(I + 5, 6).Value = TC(J, 3) 'récupère en colonne F la valeur ligne J colonne 3 de TC
            Cells(I + 5, 6).NumberFormat = "0.000%" 'format de la cellule
            Cells(I + 5, 7).Value = TC(J, 4) 'récupère en colonne G la valeur ligne J colonne 4 de TC
            Cells(I + 5, 7).NumberFormat = "0.00000000%" 'format de la cellule
            Erase TC 'efface le tableau de cellules TC
            Exit For 'sort de la boucle 2
        End If 'fin de la condition
    Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub


Tu remplis les données dans l'ordre que tu veux puis tu cliques sur le bouton Taux.

le classeur






0
sossso
 
Merci Thau Them pour votre soutien . je vais tester le code et je vais vous répondre .
Juste pour revenir rapidement sur ma réponse pour michel , en fait je sais que c'est pas bien de poster dans plusieurs forums , mais c'est seulement parceque je voulais que quelqu'un m'aide rapidement , c'est juste pour une raison de temps . seulement j'ai pas du tout aimé le mot "sauvage !!" de michel c'est pourquoi j'ai répondu comme ça . De plus , je remercie tout le monde qui m'aide dans n'importe quel forum lorsqu'ils m'aident. Désolé encore une fois Thau them et Michel-m .

MERCI BCP POUR VOTRE AIDE.

Cordialement
0
sossso
 
Bonjour Thau them , désolé pour votre dérangement .

J'ai recopié le code dans un autre fichier similaire au classeur 1 , mais ça n'a pas marché .La différence c'est que j'ai un autre fichier classeur 3 ou je veux cherché taux 2 et taux 3 , qui est comme le classeur 2 mais qui un une feuille au début avant les autres feuilles de maturité que j'ai fais basculer vers l'extrême droite pour qu'il ne perturbe pas l'éxecution si l 'ordre des feuilles est important , ainsi que j'ai changé le nom des feuilles pour que ça soit ( "52S" , "2A" , "10A" , ... ) et je les fais saisir dans la feuille "marketing" le même nom de ces feuilles . je voulais savoir est ce que je dois changé autre chose dans le fichier classeur 3 pour que ça marche ?

Merci énormément Thau Them

Cordialement .
0
sossso
 
de plus j'ai changé dans le code l'extension du fichier classeur 3 en xls
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonsoir Sossso, bonsoir le forum,

Je me demande à quoi ça sert que je commente mes codes ?...

L'ordre des onglet (feuilles) n'a aucune importance...
  • Ligne 14, remplace :

Set CL2 = Workbooks("classeur2.xlsx") 'définit le classeur CL2 (génère une erreur si ce classeur n'est pas ouvert)

par :
Set CL2 = Workbooks("classeur3.xls") 'définit le classeur CL2 (génère une erreur si ce classeur n'est pas ouvert)
  • Ligne 17, remplace :

MsgBox "Le classeur " & Chr(34) & "classeur2.xlsx" & Chr(34) & " n'est pas ouvert ! Veuillez l'ouvrir." 'message

par :
MsgBox "Le classeur " & Chr(34) & "classeur.xls" & Chr(34) & " n'est pas ouvert ! Veuillez l'ouvrir." 'message


À plus,
ThauTheme
0
sossso
 
Bonsoir ThauThem , bonsoir tout le monde ,
En fait , votre commentaires m'ont bcp aidé , c'est à travers ces commentaires que j'ai compris le code . mais je vais ai posé la question parce que j'ai déjà essayé au début ce que vous m'avez dit maintenant dans la ligne 14 et ligne 17 , mais ça n'a pas marché . lorsque j'exécute le code , les informations ne se recopient pas dans mon tableau , ce qui est bizarre .

Merci .

Cordialement.
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Sossso, bonjour le forum,

Si le Taux 1 n'existe pas dans le Classeur3, les données ne sont pas recopiées, c'est logique ... J'ai modifié le code pour que tu aises un message avec coloration de la cellule. Voici les deux fichiers qui marchent chez moi pour que tu testes...
Classeur1.xls
Classeur3.slx

0
sossso
 
Bonjour ThauThem
Désolé Thau them si je vous dérange , mais je sais pas pourquoi cela ne marche pas . je vous ajoute une information mais je sais pas si ça influence , c'est que lorsque j' ouvre le classeur3 , je dois tout d'abord activer dans ce classeur 3 deux compléments en extension xla pour pouvoir activer des fonctions dans ce classeur 3 . mais je sais pas si ça influence , parceke lorsque j'éxecute mon code , meme la date que j'ai tapé dans le classeur 1 ne se copie pas dans la cellule b1 du classeur 3 .

Je sais pas si vous avez une idée sur ça . Merci encore une fois
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonsoir Sossso, bonsoir le forum,

Tu ne me dis pas si ça marche avec les deux fichiers que je t'ai proposé ?...
Dans tous les cas il me faut tes fichiers et les compléments pour tenter d'y voir clair et peut-être trouver la solution...
0
sossso
 
Bonsoir Thau Them ,

En fait , mes deux fichiers sont un peu confidentiels , est ce que c'est possible que vous me donniez votre adresse email pour que je vous les envoie . Si ça vous pose pas de problème. Merci
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Sossso, bonjour le forum,

Ça ne m'embête pas mais je pense qu'il faut t'inscrire pour que le puisse te l'envoyer par message privé. Ou bien que tu me donnes ton adresse mail.
0
sossso
 
Bonjour ThauThem ,

Merci bcp . voici mon adresse email , envoyez moi votre adresse par email pour que je vous envoie les fichiers . Merci :

***@***

Merci encore .
0
sossso Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour Thau Them ,

Avez vous reçu mon message.

Merci .
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

J'ai supprimé votre adresse mail du forum. C'est contraire à la Charte et ce qfin de vous protéger d'éventuels spammeurs...

Si vous souhaitez envoyer les fichiers à ce bon ThauTheme (Salutations au passage), il convient de lui envoyer un Message privé.
Pour cela, cliquez sur son pseudo (au dessus de n'importe laquelle de ses réponses), puis cliquez sur le bouton "Lui écrire un message".
Vous devriez arriver ici : https://forums.commentcamarche.net/forum/inbox/new/ThauTheme
0
sossso Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok . Désolé Pijaku . et Merci
0