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 :

Aide VBA Tracer ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Par défaut Aide VBA Tracer ligne
    Bonjour à tous !
    Voilà je débute en vba et j'ai un problème.
    Je souhaite tracer plusieurs lignes en fonction de coordonnées de points qui vont changer.

    Mon code est :

    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
    Dim k As Integer
    Dim n As Integer ' nombfre d'élément
    Dim I As Integer 'Premier noeud
    Dim J As Integer ' Deuxieme noeud
    Dim xi As Variant 'coordonnée x du noeud I
    Dim yi As Variant ' coordonnée y du noeud I
    Dim xj As Variant ' coordonnée x du noeud J
    Dim yj As Variant ' coordonnée y du noeud J
    Dim a As Integer 'Variable qui nous servira à balayer le Tableau des Elements
    Dim b As Integer ' Variable qui nous serviras a balayer le Tableau des Noeuds
     
    b = 15
    a = 3
     
     
    Worksheets("Graphique").Select
    Worksheets("Graphique").Cells.Clear
    n = InputBox("nombre d'éléments")
    For k = 8 To n + 8
        I = Cells(k, b).Value 'On regarde le premier noeud
        J = Cells(k, b + 1).Value ' On regarde le deuxième Noeud
        xi = Cells(I + 7, a).Value
        yi = Cells(I + 7, a + 1).Value
        xj = Cells(J + 7, a).Value
        yj = Cells(J + 7, a + 1).Value
        ActiveSheet.Shapes.AddLine((xi * 100) + 100, (xj * 100) + 100, (yi * 100) + 100, (yj * 100) + 100).Select
    Next k
    Or les lignes se tracent mais un message d'erreur apparaît me disant qu'il y a une erreur de type au niveau de la ligne "Activesheet ..."

    J'ai cherché partout je ne trouve aucune réponse à mon problème ...
    Aidez moi s'il vous plait

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je pense que c'est parce que dans les cellules qui définissent les coordonnées, tu as une valeur supérieure à 320.

    Remplace tous tes Integer par Long.
    Remplace tous les 100 de ton code par des 100& (pas d'espace entre 100 et &).

    J'ai cherché partout je ne trouve aucune réponse à mon problème ...
    Dans l'aide VBA : https://docs.microsoft.com/fr-fr/off...eger-data-type

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Par défaut
    J'ai modifier mon code comme vous me l'avez indiqué.

    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
    Dim k As Long
    Dim n As Long ' nombfre d'élément
    Dim I As Long 'Premier noeud
    Dim J As Long ' Deuxieme noeud
    Dim xi As Variant 'coordonnée x du noeud I
    Dim yi As Variant ' coordonnée y du noeud I
    Dim xj As Variant ' coordonnée x du noeud J
    Dim yj As Variant ' coordonnée y du noeud J
    Dim a As Long 'Variable qui nous servira à balayer le Tableau des Elements
    Dim b As Long ' Variable qui nous serviras a balayer le Tableau des Noeuds
     
     
    b = 15
    a = 3
     
     
    Worksheets("Graphique").Select
    Worksheets("Graphique").Cells.Clear
    n = InputBox("nombre d'éléments")
    For k = 8 To n + 8
        I = Cells(k, b).Value 'On regarde le premier noeud
        J = Cells(k, b + 1).Value ' On regarde le deuxième Noeud
        xi = Cells(I + 7, a).Value
        yi = Cells(I + 7, a + 1).Value
        xj = Cells(J + 7, a).Value
        yj = Cells(J + 7, a + 1).Value
        ActiveSheet.Shapes.AddLine((xi * 100&) + 100&, (xj * 100&) + 100&, (yi * 100&) + 100&, (yj * 100&) + 100&).Select
    Next k
    Mais il y a toujours une incompatibilité de type à la ligne "Activesheet.Shapes ...."

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Pourquoi as-tu déclaré certaines variables de type Variant ?
    Déclare-les de type Long (si c'est des entiers) ou Double (si c'est des nombres à décimales).

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Par défaut
    Parce que le type variant d'adapte à toutes les cellules et vue que j'avais toujours un problème de type, j'ai préféré mettre variant poour que ça ne pose pas de problème.

    Je vais regarder

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Clemlfge Voir le message
    Parce que le type variant d'adapte à toutes les cellules
    Un couteau suisse aussi s'adapte à beaucoup de situations. N'empêche que lorsque je veux visser une cruciforme, je prends généralement un vrai tournevis et lorsque je veux faire la cuisine, je prends un vrai couteau de découpe.

    Le type Variant est à réserver à des cas très particuliers, quand on ne peut pas faire autrement.
    Dans la majorité des cas, on utilise le type qui convient à l'usage qu'on veut faire de la variable.

    vue que j'avais toujours un problème de type, j'ai préféré mettre variant poour que ça ne pose pas de problème.
    Ca, c'est ce qui s'appelle mettre la poussière sous le tapis...
    C'est comme mettre un On Error Goto générique pour faire disparaitre un message d'erreur qu'on n'a pas la patience de traiter.
    Mais la poussière finit toujours par ressortir à un moment ou à un autre, comme le montre ton cas.

    Pour faire ce que tu souhaites, tu as besoin que tes variable soient des valeurs numériques.
    Si des variables de ce type causent des problèmes, alors il faut traiter ces problèmes.
    Ca peut se faire de plusieurs façons, suivant le cas : corriger les données sources, faire des tests pour contrôler les données récupérer et gérer celles qui ne conviennent pas, etc.

Discussions similaires

  1. [2012] [VBA] Aide pour traitement ligne par ligne
    Par UnlimitedEden dans le forum Développement
    Réponses: 3
    Dernier message: 26/04/2018, 09h19
  2. [XL-2007] Aide VBA Ajouter/Supprimer des lignes d'une base de données
    Par 31alex31 dans le forum Excel
    Réponses: 3
    Dernier message: 09/03/2016, 11h48
  3. Aide pour Macro VBA copie lignes entre 2 classeur
    Par magicsismic dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/03/2015, 21h13
  4. Excel VBA - Dernière ligne d'une colonne
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/12/2005, 17h33
  5. [FLASH MX2004] Tracer ligne discontinue en AS
    Par thaisno dans le forum Flash
    Réponses: 7
    Dernier message: 23/12/2004, 16h24

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