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 :

[Excel] - former une chaîne avec valeur de la feuille active ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut [Excel] - former une chaîne avec valeur de la feuille active ?
    Bonjour,

    Afin de garder en mémoire mon classeur actif et ma feuille active à un moment donnée, j'enregistre leurs références dans des cellules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Workbooks("Progr.xls").Worksheets("MemoiresUFS")
    .Range("H1") = Macellule.Address
    .Range("H2") = Mafeuille.Name
    .Range("H3") = Monclasseur.Name
    End With
    J'enregistre ces données dans des cellules plutôt que de passer par des variables car je réutilise ces données dans d'autres modules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Workbooks("Progr.xls").Sheets("MemoiresUFS")
    Dim Mafeuille As String
    
    Set Mafeuille = "Workbooks("" .Range("H3").Value & "")" & ".Sheets("" & .Range("H2").Value & "")"
    
        If Mafeuille.Range("R3") = "Utilisateur: Dupont" Then
    Comme vous l'aurez certainement déjà remarqué, une erreur survient lors de la rédaction de mon code sur la ligne en gras.

    J'ai donc 1 (ou2) question: Comment mettre des guillemets entre guillemets pour former ma chaîne?

    Ou alors dois-je faire autrement ? (ce que je suppose)

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    Je n'ai pas testé mais je vois plus un truc du genre ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Mafeuille As Worksheet
    With Workbooks("Progr.xls").Sheets("MemoiresUFS")
       Set Mafeuille = Workbooks( .Range("H3").Value).Sheets( .Range("H2").Value )
    End With
    If MaFeuille.Range("A1") <> ...

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Alors, au lieu d'écrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Mafeuille = "Workbooks("" .Range("H3").Value & "")" & ".Sheets("" & .Range("H2").Value & "")"
    Essaye ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Mafeuille = Workbooks(Range("H3").Value).Sheets(Range("H2").Value)
    ça devrait mieux marcher je pense (j'ai pas testé )

  4. #4
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Bonjour et déjà merci à tous les deux,

    Lorsque mon userform s'active, c'est OK:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Activate()
    Dim Mafeuille As Worksheet
    With Workbooks("Progr.xls").Sheets("MemoiresUFS")
        Set Mafeuille = Workbooks(.Range("H3").Value).Sheets(.Range("H2").Value)
        If Mafeuille.Range("R3") = "Utilisateur: Dupont" Then
            UfRouleauAV.TextBox1 = .Range("C1").Value
    ...
    Mais par après, j'ai une erreur sur la ligne en gras:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Mafeuille As Worksheet
    
    Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    With Workbooks("Progr.xls").Sheets("MemoiresUFS")
        If Mafeuille.Range("R3") = "Utilisateur: Dupont" Then
            .Range("C1") = UfRouleauAV.TextBox1
    ...
    Run-time error '91':
    Object variable or With block not set
    (J'ai placé ma déclaration de variable tout en haut du module de l'UF pour la réutiliser dans une autre procédure du même module.)

    ??

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si MaFeuille est une autre feuille, tu dois l'instancier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MaFeuille = WorkSheets("NomDeTafeuille")
    Et ça même si ta déclaration est dans les déclarations de la feuille de code de l'UF
    A+

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Pourquoi ne fermes-tu pas ton bloc With ?

  7. #7
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Caféïne a écrit:
    Pourquoi ne fermes-tu pas ton bloc With ?
    Je le ferme de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    With Workbooks("Progr.xls").Sheets("MemoiresUFS")
        If Mafeuille.Range("R3") = "Utilisateur: Dupont" Then
            .Range("C1") = UfRouleauAV.TextBox1
            .Range("C2") = UfRouleauAV.TextBox2
            .Range("C3") = UfRouleauAV.TextBox3
            .Range("C4") = UfRouleauAV.ComboBox1
        ElseIf Mafeuille.Range("R3") = "Utilisateur: Barre" Then
            .Range("E1") = UfRouleauAV.TextBox1
            .Range("E2") = UfRouleauAV.TextBox2
            .Range("E3") = UfRouleauAV.TextBox3
            .Range("E4") = UfRouleauAV.ComboBox1
        End If
    End With
    Y vois-tu une erreur?
    (Je n'avais pas mis le reste du code pour faire plus court)

    Ouskel'nord, je regarde ce que tu me dis

  8. #8
    Membre habitué Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Vous cassez plus la tête pour le second problème, tout est de ma faute (en même ça ne saurait être celle du voisin )

    je déclare bien ceci en haut de module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Mafeuille As Worksheet
    Mais je l'avais remis dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub UserForm_Activate()
    Je crois que le problème vient de là car je n'ai plus d'erreur.

    Merci

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

Discussions similaires

  1. [RegEx] Tester une chaîne avec ereg()
    Par Anduriel dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2006, 11h36
  2. Redimensionner une JFrame avec valeur limite
    Par ppopov dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 15/01/2006, 20h08
  3. [Excel]Faire une somme avec une macro
    Par Chlo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/01/2006, 19h53
  4. [RegEx] Remplacer une chaîne avec preg_replace
    Par GregPeck dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2005, 12h21
  5. Trier une table avec valeur de differentes unités
    Par Sydaze dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/06/2005, 11h43

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