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 :

[VBA-E] Récupération du nom d'un onglet et d'une valeur dans un autre fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Par défaut [VBA-E] Récupération du nom d'un onglet et d'une valeur dans un autre fichier
    Bonjour,

    J'ai un fichier contenant plusieurs onglets et je voudrais que pour chaque nom d'onglet on verifie s'il existe dans une colonne d'un autre fichier et dans ce cas on retoure la valeur associée.
    Cette valeur devra être retourner sous la feuille portant le nom de l'onglet.

    Pouvez vous m'aidez pour le code
    je pense à quelque chose comme ça

    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
    Sub Calcul_lambda onglet()
     
        Dim Feuille As Worksheet
        Application.ScreenUpdating = False
        For Each Feuille In ThisWorkbook.Worksheets
     
         Set CL2 = Workbooks("Recap-Calcul-Fides-" & NomCarte & ".xls")
         Set FL2 = CL2.Worksheets("Recap-Fides")  
     
         Workbooks(CL2).Activate
     
         j = 8 
         Do While Feuille <> FL2.Range("A" & j).Value    
         j = j + 1
         Loop
     
         FL2.Range("E" & j).Select
     
         Windows("Calcul-lambda-Conn" &NomCarte).Activate
         Worksheets("Feuille").Range("L2").Value = FL2.Range("E" & j).
     
        Next Feuille
        Application.ScreenUpdating = True
    End Sub
    Merci d'avance

  2. #2
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Bonjour,

    Tu as quoi comme erreur ? Ca ne te donne pas le bon resultat ou ca bloque completement ?

    A vu de nez je pense que ca doit bloquer ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While Feuille <> FL2.Range("A" & j).Value
    et ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows("Calcul-lambda-Conn" &NomCarte).Activate
    a remplacer (peut etre) par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While Feuille.Name<> FL2.Range("A" & j).Value
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows("Calcul-lambda-Conn" & NomCarte).Activate
    Precise un peu plus ton probleme s'il te plait

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Par défaut
    Mon code ne marche pas il ne se passe rien

    pas d'erreur d'exécution

    pouvez vous m'éclairer

    merci

  4. #4
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Pas d'erreur d'execution ? Si je copie ce que tu as ecrit j'ai des erreurs des la compilation ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub Calcul_lambda onglet()
    et ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuille").Range("L2").Value = FL2.Range("E" & j).
    Copie le code complet s'il te plait c'est plus facile

    Sinon voila un code qui marche
    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
    Sub Calcul_lambda_onglet()
     
    Dim Feuille As Worksheet, FL2 As Worksheet
    Dim CL2 As Workbook
    Dim j As Integer
    Dim Existe As Boolean
    Application.ScreenUpdating = False
     
    Set FL2 = Workbooks("Book2").Worksheets("sheet1")
    For Each Feuille In ThisWorkbook.Worksheets
     
    j = 1
    Do
     
    If Feuille.Name = FL2.Range("A" & j).Value Then
    Existe = True
    Exit Do
    Else
    j = j + 1
    End If
     
    if j > 100 then exit do 'evite de boucler indefiniment si le nom n'apparait pas
     
    Loop
     
    If Existe Then 
    'ici tu fais ce que tu veux (copier le nom de l'onglet, de la ligne....)
    end if
     
    Existe = False
    Next Feuille
    Application.ScreenUpdating = True
    End Sub
    Book2 contient des noms d'onglet dans la colonne A en partant de la ligne 1 dans Sheet1. A adapter a tes besoins

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Par défaut
    Merci pour ton code tonton fred,

    Je l'ai adapté mais j'ai toujours le même problème, c'est à dire rien dans la cellule voulu. J'ai rajouté la ligne Workbooks("Calcul-lambda-Res-" & NomCarte).Activate
    avant For Each Feuille In ThisWorkbook.Worksheets sinon je vois pas comment dire que Feuille appartient à ce fichier. J'ai mis en gras les principales modifications de ton code.

    Dans ton exemple Feuille est situé sur Book2?

    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
    Public Sub Ajout_CalculFides(NomCarte As String, Version As String)
    
    Dim Feuille As Worksheet, FL2 As Worksheet
    Dim CL2 As Workbook
    Dim j As Integer
    Dim Existe As Boolean
    Application.ScreenUpdating = False
    
    Set FL2 = Workbooks("Recap-Calcul-Fides-" & NomCarte & ".xls").Worksheets("Recap-Fides")
    Workbooks("Calcul-lambda-Res-" & NomCarte).Activate
    For Each Feuille In ThisWorkbook.Worksheets
    
    nb_lignes_totales = FL2.UsedRange.Rows.Count
    j = 8
    Do
    
    If Feuille.Name = FL2.Range("A" & j).Value Then
    Existe = True
    Exit Do
    Else
    j = j + 1
    End If
    
    If j > nb_lignes_totales Then Exit Do 'evite de boucler indefiniment si le nom n'apparait pas
    
    Loop
    
    If Existe Then
    
        FL2.Range("E" & j).Select
        Workbooks("Calcul-lambda-Res-" & NomCarte & ".xls").Feuille.Range("L2").Value = FL2.Range("E" & j)
    
    End If
    
    Existe = False
    Next Feuille
    Application.ScreenUpdating = True
    End Sub

  6. #6
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Feuille est defini ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Feuille In ThisWorkbook.Worksheets
    Donc il fait partie du workbook qui contient la macro (pas book2)

    En lisant ton code un doute me vient: tu veux lire les noms des feuilles dans le Workbooks("Calcul-lambda-Res-" & NomCarte) et les comparer avec FL2.Range("A" & j).Value ?
    Le plus simple serait que tu dises quel fichier lance la macro, quel fichier contient les feuilles et quel fichier contient la colonne avec les noms, je pense que le soucis est a ce niveau la.

    EDIT:
    Je pense que l'erreur en particulier est ici:
    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
    Public Sub Ajout_CalculFides(NomCarte As String, Version As String)
    
    Dim Feuille As Worksheet, FL2 As Worksheet
    Dim CL2 As Workbook
    Dim j As Integer
    Dim Existe As Boolean
    Application.ScreenUpdating = False
    
    Set FL2 = Workbooks("Recap-Calcul-Fides-" & NomCarte & ".xls").Worksheets("Recap-Fides")
    
    For Each Feuille In WorkbookQuiContientLesFeuilles.Worksheets _
    'Workbooks("Calcul-lambda-Res-" & NomCarte) peut etre? thisworkbook _
    est le classeur qui contient la macro meme si tu actives un classeur avant
     
    nb_lignes_totales = FL2.UsedRange.Rows.Count
    j = 8
    Do
    
    If Feuille.Name = FL2.Range("A" & j).Value Then
    Existe = True
    Exit Do
    Else
    j = j + 1
    End If
    
    If j > nb_lignes_totales Then Exit Do 'evite de boucler indefiniment si le nom n'apparait pas
    
    Loop
    
    If Existe Then
    
        FL2.Range("E" & j).Select
        Workbooks("Calcul-lambda-Res-" & NomCarte & ".xls").Feuille.Range("L2").Value = FL2.Range("E" & j) 
    'aussi, chez moi ajouter ".xls" met une erreur ici
    
    End If
    
    Existe = False
    Next Feuille
    Application.ScreenUpdating = True
    End Sub

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/02/2011, 22h03
  2. [VBA-E] Bloquer le nom d'un onglet
    Par marsupilami34 dans le forum Excel
    Réponses: 2
    Dernier message: 03/04/2007, 13h46
  3. [VBA-Excel] Récupération du nom de l'onglet
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/01/2007, 10h11
  4. [VBA Excel] Copie d'une feuille dans un autre fichier
    Par nattyman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2006, 10h35
  5. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 11h24

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