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

Messages postés
21
Date d'inscription
dimanche 7 janvier 2007
Dernière intervention
5 juillet 2010
- - Dernière réponse : dam660
Messages postés
21
Date d'inscription
dimanche 7 janvier 2007
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 !!*
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
73
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
73
0
Merci
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 
Commenter la réponse de cs_Jack
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
3 octobre 2013
0
Merci
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
Commenter la réponse de c148270
Messages postés
21
Date d'inscription
dimanche 7 janvier 2007
Dernière intervention
5 juillet 2010
1
0
Merci
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 !
Commenter la réponse de dam660
Messages postés
21
Date d'inscription
dimanche 7 janvier 2007
Dernière intervention
5 juillet 2010
1
0
Merci
Et a priori Excel plante moins quand je n'ajoute pas de procédures..
Commenter la réponse de dam660

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.