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

Résolu
dam660 Messages postés 21 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 5 juillet 2010 - 1 juil. 2010 à 08:58
dam660 Messages postés 21 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 5 juillet 2010 - 2 juil. 2010 à 11:43
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 juil. 2010 à 10:29
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)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 juil. 2010 à 10:32
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 
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
1 juil. 2010 à 10:34
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
0
dam660 Messages postés 21 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 5 juillet 2010 1
2 juil. 2010 à 11:34
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dam660 Messages postés 21 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 5 juillet 2010 1
2 juil. 2010 à 11:43
Et a priori Excel plante moins quand je n'ajoute pas de procédures..
0
Rejoignez-nous