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 :

Syntaxe Pour référence [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut Syntaxe Pour référence
    Bonjour à tous,

    J'appel encore une fois à votre aide précieuse pour une question de syntaxe au niveau de la création de référence de cellule. Le code qui suit est capable de créer une nouvelle feuille avec succès Excel en utilisant les variables et incrémentations pour composer le nom de la nouvelle feuille. Lorsque j'essais d'utiliser le même assemblage pour insérer une référence à une cellule je reçois l'erreur de compilation: Attendu fin d'instruction. Pourtant je suis la même syntaxe que si j'utilisais un nom qui ne contient aucune variable.

    La section qui cause l'erreur est en jaune et la section avec un nom sans variable est en vert

    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
    SiteNo = 1 ' reset du compteur SiteNo
    Dim FeuilleNo As Integer
    FeuilleNo = 1
    
    While SiteNo <> 5 And Main_formulaire.Controls("Nom_du_site" & SiteNo).Value <> ""
        Sheets("Bon de livraison site principal").Select
        Cells.Select
        Range("B1").Activate
        Selection.Copy
        Sheets.Add After:=Sheets(Sheets.Count)
        Sheets("Feuil" & FeuilleNo).Select
        Sheets("Feuil" & FeuilleNo).Name = ("Bon de livraison site" & Main_formulaire.Controls("Nom_du_site" & " " & SiteNo).Value)
        Range("A1").Select
        ActiveSheet.Paste
        Range("A1").Select
        ActiveSheet.Pictures.Insert("P:\image").Selects
        Selection.ShapeRange.ScaleWidth 3.0643203883, msoFalse, msoScaleFromTopLeft
        Selection.ShapeRange.ScaleHeight 3.0643203883, msoFalse, msoScaleFromTopLeft
        Range("B9").Select
        Application.CutCopyMode = False
        ActiveWorkbook.Names.Add Name:="Add_Site" & SiteNo & "_BDL", RefersToR1C1:= _
            "='("Bon de livraison site" & Main_formulaire.Controls("Nom_du_site" & " " & SiteNo).Value)'!R9C2"
        Range("B10").Select
        ActiveWorkbook.Names.Add Name:="Ville_Site" & SiteNo & "_BDL", RefersToR1C1:= _
            "='Bon de livraison site 2'!R10C2"
        Range("B11").Select
        ActiveWorkbook.Names.Add Name:="Pro_Site" & SiteNo & "_BDL", RefersToR1C1:= _
            "='Bon de livraison site 2'!R11C2"
        Range("B12").Select
        ActiveWorkbook.Names.Add Name:="CoPo_Site" & SiteNo & "_BDL", RefersToR1C1:= _
            "='Bon de livraison site 2'!R12C2"
        Range("E6:F6").Select
        ActiveWorkbook.Names.Add Name:="Nom_Client" & SiteNo & "_BDL", RefersToR1C1:= _
            "='Bon de livraison site 2'!R6C5"
        Range("E16:G16").Select
        
        'Entré des info clients dans les nouveaux bons de livraison
        Range("Add_Site" & SiteNo & "_BDL") = Sheets("Serveur - Utilisateurs").Range("Add_Site" & SiteNo & "_DD")
        Range("Ville_Site" & SiteNo & "_BDL") = Sheets("Serveur - Utilisateurs").Range("Ville_Site" & SiteNo & "_DD")
        ' Range("Pro_Site" & SiteNo & "_BDL") = Sheets("Serveur - Utilisateurs").Range("Add_Site" & SiteNo & "_DD")
        Range("CoPo_Site" & SiteNo & "_BDL") = Sheets("Serveur - Utilisateurs").Range("Copo_Site" & SiteNo & "_DD")
        
        FeuilleNo = FeuilleNo + 1
        SiteNo = SiteNo + 1
    Wend
    Merci à l'avance de votre aide

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Evite les Select et Activate et utilises des variables intermédiaires.
    Essaies de voir l'exemple ci-après, de comprendre la logique et de l'adapter (j'ai pas 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
    Dim ShSP As Worksheet, NewSh As Worksheet
    Dim SiteNo As Integer
    Dim Site As String
     
    Application.ScreenUpdating = False
    Set ShSP = Sheets("Bon de livraison site principal")
    For SiteNo = 1 To 5
        Site = Main_formulaire.Controls("Nom_du_site" & SiteNo).Value
        If Site <> "" Then
            Set NewSh = Sheets.Add(After:=Sheets(Sheets.Count))
            NewSh.Name = "Bon de livraison site" & Site
            ShSP.UsedRange.Copy NewSh.Range("A1")
            ThisWorkbook.Names.Add Name:="Add_Site" & SiteNo & "_BDL", RefersToR1C1:="='" & NewSh.Name & "'!R9C2"
            '...suite du code avec ShSP la feuille BL Site principal et NewSh les nouvelles feuilles crées
            '..........
        Else
            Exit For
        End If
    Next SiteNo
     
    Set NewSh = Nothing
    Set ShSP = Nothing

  3. #3
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Bonjour Mercatog,

    J'ai essayé de faire comme tu m'as répondu mais je reste avec le même genre de problème. Excel met '" & NewSh.Name & "' comme si c'était le nom de la feuille et non pas la valeur qu'il contient.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    j'ai fais un test avec des site 1, 2 ..5
    J'ai obtenu les 5 feuilles: Bon de livraison site 1, Bon de livraison site 2...Bon de livraison site 5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Names.Add Name:="Add_Site" & SiteNo & "_BDL", RefersToR1C1:="='" & NewSh.Name & "'!R9C2"
    Cette ligne, me crée dans chaque feuille des noms de plage Add_Site1_BDL, Add_Site_BDL dans les cellules B9.

    Peux tu remettre ton code modifié en entier et expliquer davantage le problème?

  5. #5
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Je viens de resoudre mon probleme en modifiant un peu l'ordre de la syntaxe.

    Je ne comprend toujours pas pourquoi ca fonctionne pas pour moi avec ce que tu as écris

    voici la modification, si ca peut-être utile pour qqn:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.Names.Add Name:=("Add_Site" & SiteNo & "_BDL"), _
        RefersTo:=Worksheets("BDL site" & " " & Main_formulaire.Controls("Nom_du_site" & SiteNo).Value).Range("B9")
    Merci de ton coup de pouce Mercatog, tu m'as mis sur la bonne piste pour la solution!

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

Discussions similaires

  1. Syntaxe pour tester un recordset
    Par mael94420 dans le forum ASP
    Réponses: 5
    Dernier message: 21/06/2005, 12h17
  2. syntaxe pour compilation conditionnelle ?
    Par tintin72 dans le forum C
    Réponses: 9
    Dernier message: 17/05/2005, 18h12
  3. [analyse de syntaxe] pour C et C++ sur Linux
    Par Madmac dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/07/2004, 06h37
  4. [windows] recherche outils coloration syntax. pour -> htm
    Par hpfx dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 02/10/2003, 01h52
  5. Syntaxe pour avoir un seul resultat dans une requete
    Par Pompil dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/09/2003, 15h51

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