[Catégorie modifiée VB6 --> VBA] Problème insertion ligne -> marche une fois sur [Résolu]

Signaler
Messages postés
21
Date d'inscription
dimanche 7 janvier 2007
Statut
Membre
Dernière intervention
5 juillet 2010
-
Messages postés
21
Date d'inscription
dimanche 7 janvier 2007
Statut
Membre
Dernière intervention
5 juillet 2010
-
Salut à tous !

alors après moulte recherche avec notre amis Google, j'en viens à poser la question suivante :
Alors je boucle plusieurs fois pour insérer des lignes, et la première fois, la ligne est insérée, et la deuxième fois, j'ai le message :
"La méhode 'select' de l'objet 'Range' a échoué", puis Excel plante et oblige à redémarer completement l'appli... voici une partie du code que j'utilise :


      'line est un Integer passé en paramètre (par valeur) de la méthode  
      Feuil1.Rows(line & ":" & line).Select
      Selection.Insert Shift:=xlDown ' pour insérer


si quelqu'un à une idée je le remercie !!*

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut
Comment est défini ton objet 'Feuil1' ?
Ne devrais-tu pas utiliser la vraie syntaxe :
Sheets("Feuil1").Rows(line & ":" & line).Select

Que vaut 'line' au moment du plantage ?
Combien de lignes remplies actuellement sur ta feuille ?
Quelle version de Excel et Windows ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Ah, en effet, quand on exécute cette ligne alors que la feuille n'est pas actuellement celle sélectionnée, on obtient cette erreur.
Il faut donc faire :
    Sheets("Feuil1").Select
    Rows(line & ":" & line).Select
    Selection.Insert Shift:=xlDown 
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
J'ai réussit à obtenir le message en executant ce code mais en étant sur une feuille active autre que feuil1.

Bonne journée
Messages postés
21
Date d'inscription
dimanche 7 janvier 2007
Statut
Membre
Dernière intervention
5 juillet 2010
1
Bonjour !

alors a priori ca marche avec la solution de jack' !

mais la j'en peux plus d'Excel et sa MAUVAISE gestion de la mémoire..
je m'explique :
je génère des CheckBox dynamiquement (en fonction d'une liste de nom de cellule) et ajoute le code associé.
Mais il plante une fois sur 2, ou 3, bref il plante et je relance sans faire aucune modification et ca marche ><

ca n'a plus grand chose à voir avec ce sujet, mais on sait jamais, je met le code que j'utilise :


'Cette méthode permet d'ajotuer une CheckBox dans la feuille F
Sub ajouterCheckbox(f As Worksheet, nameC As String, leftC As Long, topC As Long, widthC As Long, heightC As Long, captionC As String, backColorC As Long, foreColorC As Long)
    
    On Error GoTo errAjoutCB
    'Déclaration d'un OLEObject pour l'ajout d'une checkbox
    Dim b As OLEObject
 
    
    Set b = Feuil1.OLEObjects.Add("Forms.CheckBox.1")
    With b
        .Name = nameC   
        .Left = leftC      
        .Top = topC       
        .Width = widthC 
        .Height = heightC 
        .Object.Caption = captionC        
        .Object.BackColor = backColorC  
        .Object.ForeColor = foreColorC     
        .ShapeRange.Fill.Visible = msoFalse   
        .ShapeRange.line.Visible = msoFalse  
        .Object.Font.Bold = False
        .Object.Font.Size = 10
    End With
    Exit Sub
errAjoutCB:
    MsgBox ("Erreur lors de l'ajout des CheckBox.")
    MsgBox (err.Description)
    End
    Stop
End Sub




'Et pour l'ajout de procédure :




Sub AjouterProcEven(c As Workbook, nomModule As String, evenement As String, objet As String, code As String)
    On Error GoTo errAjoutProc
    Dim nextLine As Integer    
    
    With c.VBProject.VBComponents(nomModule).CodeModule
        nextLine = .CountOfLines + 1
       .InsertLines nextLine, code
    End With
    Exit Sub
errAjoutProc:
    MsgBox ("Erreur ajout procedure !")
    End
    Exit Sub
End Sub


voila voila merci à tosu pour vos réponses !
Messages postés
21
Date d'inscription
dimanche 7 janvier 2007
Statut
Membre
Dernière intervention
5 juillet 2010
1
Et a priori Excel plante moins quand je n'ajoute pas de procédures..