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 :

Erreur exécution - macro insertion de lignes dans feuille excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Par défaut Erreur exécution - macro insertion de lignes dans feuille excel
    Bonjour,


    J'ai une macro qui doit insérer automatiquement des lignes dans une feuille excel.
    Le nombre de lignes insérées varie en fonction de la valeur dans la première colonne de la feuille (type tableau ci-dessous). Pour cela la colonne B me sert à faire la différence entre la 2nde valeur et la 1ère valeur de la colonne A, et ainsi de suite.

    1 0 A 111
    3 2 B 124
    7 4 C 135
    9 2 D 154
    10 1 E 156
    14 4 F 154
    15 1 G 156


    J'ai trouvé une macro qui après quelques modifications faites avec mon très faible niveau VBA me donne un résultat tout à fait satisfaisant. Le seul petit souci est qu'à la fin, la macro affiche
    Erreur d'exécution "13":
    Incompatibilité de type

    J'ai bien tenté de déclarer les variables différemment mais sans grand succès... je ne trouve pas l'erreur.



    Le code :

    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
     
    Sub InsertLignes()
     
        Application.ScreenUpdating = False
        Worksheets("Feuil31").Activate
     
       Dim n As Integer
        Dim LastRow As Integer
        Dim temp As Integer
     
        LastRow = Range("B" & Rows.count).End(xlUp).Row
        For n = LastRow To 1 Step -1
            temp = Range("B" & n)
                    If (temp > 1) Then
                Rows(n & ":" & n + temp - 2).Insert Shift:=xlDown
     
            End If
        Next n
     
    End Sub
    Si quelqu'un a une solution, un grand merci !

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la ligne 1 contient bien un chiffre en colonne B ou c'est tes titres ? Si ce sont des titres, l'erreur vient de là et tu dois exclure cette ligne comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For n = LastRow To 2 Step -1
    si la cellule B1 contient bien des chiffres, tu vas devoir tester ta macro en pas à pas et inspecter la valeur que prend "temp" juste avant de tomber en erreur

    le message d'erreur semble indiquer que tu manipule une chaine de caractère au lieu d'un chiffre sur cette ligne :

    je te laisse contrôler, impossible pour moi de le faire. Ce n'est qu'un avis explicatif et pas forcément le problème exact.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Par défaut
    Super, merci beaucoup !! l'erreur venait bien de là, un titre en cellule B1, et du coup avec ta modification ça marche.

    Avec titre en colonne B, le bon code est donc :
    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
    Sub InsertLignes()
     
        Application.ScreenUpdating = False
        Worksheets("Feuil32").Activate
     
       Dim n As Integer
        Dim LastRow As Integer
        Dim temp As Integer
     
        LastRow = Range("B" & Rows.count).End(xlUp).Row
        For n = LastRow To 2 Step -1
            temp = Range("B" & n)
                    If (temp > 1) Then
                Rows(n & ":" & n + temp - 2).Insert Shift:=xlDown
     
            End If
        Next n
     
    End Sub

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

Discussions similaires

  1. problème insertion de données dans feuille excel
    Par UDSP50 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/12/2014, 16h25
  2. Insertion son MP3 dans feuille Excel
    Par ericdev67 dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 18/01/2014, 12h42
  3. echec d'insertion de ligne dans une table
    Par foblar dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/07/2006, 10h13
  4. [Tableaux] Insertion dynamique ligne dans un tableau
    Par masseur dans le forum Langage
    Réponses: 12
    Dernier message: 28/03/2006, 14h53
  5. Insertion dialog box dans feuille SDI
    Par Tom Joad dans le forum MFC
    Réponses: 3
    Dernier message: 12/04/2004, 00h04

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