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 :

[E-00] utilisation d'un auxilliaire pour simplifier la lecture du code


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut [E-00] utilisation d'un auxilliaire pour simplifier la lecture du code
    bonjour,

    voici la parti de mon code qui ne fonctionne pas et surtout la ligne en rouge

    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
    Public Sub SHAPE_REMOVAL_FWD_LIFTING()
    
    Dim jack$
    Dim airbag$
    Dim crane$
    
    jack = Sheets("Lifting Phase FWD").Range("D100").Value
    airbag = Sheets("Lifting Phase FWD").Range("D101").Value
    crane = Sheets("Lifting Phase FWD").Range("D102").Value
    
    If jack = "1" Then
        jack = "0"
        Sheets("Lifting Phase FWD").Shapes("lift_jack").Select
        Selection.Delete
    End If
    If airbag = "1" Then
        airbag = "0"
        Sheets("Lifting Phase FWD").Shapes("lift_airbag").Select
        Selection.Delete
    End If
    If crane = "1" Then
        crane = "0"
        Sheets("Lifting Phase FWD").Shapes("lift_crane").Select
        Selection.Delete
    End If
    
    End Sub
    si je met sheets("...").rangeblablabla a la place de mon airbag ca marche
    j'ai essayé de mettre mon auxilliaire airbag en string en integer en variant rien n'y fait la cellule ne change pas de valeur ....surtout que c'est beaucoup plus lisisble ecrit avec des auxilliaires ....

    quelqu'un connait-il la solution ?

    merci pour vos réponses

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Ton code fonctionne parfaitement bien à cet endroit, c'est juste que tu n'as pas assimilé correctement la notion de référence.

    Tu affectes à airbag la valeur de ta cellule, et non une référence à celle-ci. En plus VBA n'aime pas trop qu'on essaye de faire une référence à autre chose qu'un objet (en dehors du passage de paramètres pas référence dans une fonction): faut dire que la propriété Value de l'objet Range est de type Variant.
    (au passage j'ai envie de dire: voilà une faiblesse de VBA que de ne pas pouvoir faire de référence à des types standard)

    Donc pour changer la valeur de ta cellule, soit tu retape tout, soit tu crée une référence à la cellule et tu change la valeur de la cellule de la manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mareference.Value = "0"

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    bonjour decondelite merci d'avoir répondu aussi rapidement,

    qu'appelles-tu référence à une cellule ? ()

  4. #4
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Points : 323
    Points
    323
    Par défaut
    Salut,

    Sinon tu peux mettre à la fin de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Lifting Phase FWD").Range("D101").Value = airbag

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Pour faire simple, dis toi qu'une référence, c'est une expression "qui se rapporte à quelque chose", donc qui s'y réfère (d'où le nom "référence" ).

    Pour ta cellule, quand je dis "créer une référence à ta cellule", c'est créer une variable qui va désigner ta cellule, dans ton cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim macellule As Range
    ...
    Set macellule = Sheets("Lifting Phase FWD").Range("D101")
    Plus loin, le code reconnaîtra macellule comme étant la cellule D101 de la feuille "Lifting Phase FWD", et pour accéder à la valeur il suffit de taper:
    ce qui revient à taper:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Lifting Phase FWD").Range("D101").Value
    Bon voilà j'ai expliqué de façon très simple les références, car en réalité c'est plus compliqué que ça.

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    mais parfaitement expliqué .....

    je vais tenté comme çà

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    çà fonctionne très bien merci pour le tuyau et bonne fin de journée

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

Discussions similaires

  1. SDK pour generation et lecture du Code Barre .net
    Par chekhchoukh dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 14/11/2011, 09h57
  2. utiliser une variable pour simplifier code
    Par bil_home dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 01/07/2009, 16h54
  3. [E-00] Utilisation d'un auxilliaire pour simplifier le code
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 21/11/2008, 17h31
  4. Classe générique pour simplifier l'utilisation des fichiers
    Par Oprichnik dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 10
    Dernier message: 09/08/2007, 23h15
  5. Portage d'un prog pour simplifier l'utilisation
    Par Tr@nkill dans le forum Langage
    Réponses: 7
    Dernier message: 21/04/2006, 09h24

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