Insertion de cellules VBA

Bonjour à tous, c'est encore moi

Un nouveau problème se présente : quand j'ai -1 en colonne K, je souhaiterai insérer en dessous de cette ligne des cellules vides dans les cellules E à K.

Une idée ?

Merci d'avance !

Je mets un exemple en pièce jointe

Marjow54

Bonjour,

Un exemple.

Cdlt.

Public Sub InsertRow()
Dim Cell As Range
    With ActiveSheet
        Set Cell = .Columns(11).Find(what:=-1, LookIn:=xlValues, lookat:=xlWhole)
        If Cell Is Nothing Then Exit Sub
        Cell.Offset(1, -6).Resize(, 7).Insert _
                Shift:=xlDown, _
                CopyOrigin:=xlFormatFromLeftOrAbove
    End With
End Sub

Bonjour,

Merci beaucoup.

Juste pour bien comprendre : si je dois adapter ma formule a un autre jeu de données et que je veux insérer des cellules sur une autre plage, sur qu'elle ligne je dois jouer ?

Cell.Offset(1, -6).Resize(, 7).Insert _ ?

Car je ne comprends pas comment marche cette ligne.

Merci d'avance

Re,

Dans ton exemple -1 se trouve en K4.

Cell.Offset(1, -6).Resize(0, 7)

On décale de +1 ligne et -6 colonnes : On est en E5.

On redimensionne avec +7 colonnes : On obtient la plage E5:K5

On insère une ligne pour la sélection.

Est-ce plus clair ?

Cdlt.

Parfait merci !

Maintenant que j'ai testé sur la totalité de mon tableau, j'ai le soucis aussi où ca me le fait une fois mais pas sur la totalité de mon tableau.

Comment lui dire qu'il faut le répéter à chaque fois qu'il y a -1 ?

Re,

Je savais bien que tu cachais quelque chose !...

Je reviens avec la mise à jour.

Cdlt.

Nota: envoie un exemple avec plus de -1 car c'est louche.

Voici le nouvel exemple,

Encore merci

Re,

Ton fichier en retour.

Pense à clore le sujet !...

Merci !

Ca marche...presque

En globalité ca marche mais j'ai certain -1 de mon tableau qui ne sont pas pris en compte. Une idée ?

Mon tableau est ENORME par contre (plus 110000 lignes)

Re,

Peut-être des -1 qui ne sont pas vraiment des -1 (nombre ou texte) ?

Cdlt.

Mes -1 sont du texte : ils viennent d'une formule Si (quand la condition est vraie, on note "-1")

Re,

Envoie un fichier représentatif de tes données.

Cdlt.

Ce sont des données confidentielles mais voici un exemple avec données modifiées bien sûr

Re,

Essaie ceci (fais attention au numéro de colonne) :

Public Sub InsertRow()
Dim Cell As Range, firstAddress As String
Const X As String = "-1"
    With ActiveSheet.Columns(10)
        Set Cell = .Find(what:=X, LookIn:=xlValues, lookat:=xlWhole)
        If Not Cell Is Nothing Then
            firstAddress = Cell.Address
            Do
                Cell.Offset(1, -6).Resize(, 7).Insert _
                        Shift:=xlDown, _
                        CopyOrigin:=xlFormatFromLeftOrAbove
                Set Cell = .FindNext(Cell)
            Loop While Not Cell Is Nothing And Cell.Address <> firstAddress
        End If
    End With
End Sub

Merci,

Je viens de tester et en fait quand je le fais ca me décalle tout : c'est à dire que pour le premier -1 c'est bon, mais pour le deuxième il me le fait une ligne trop bas, pour le troisième deux lignes trop bas et ainsi de suite

Re,

Il semble que la procédure fasse ce pourquoi elle a été conçue !

Précise ce que tu attends.

Cdlt.

Bonjour Marjorie, le forum,

j'ai téléchargé ton dernier fichier ; ta formule en J2 est celle-ci : =SI(G:G<=-500;"-1";"0")

les guillemets sont en trop, car avec, c'est le texte "-1" et le texte "0" au lieu des nombres -1 et 0 !

ta formule serait alors : =SI(G:G<=-500;-1;0) ; mais le G:G n'est pas bon non plus !

tu aurais dû écrire ta formule ainsi : =SI(G2<=-500;-1;0)


je te propose cette autre formule en J2 : =-(G2<=-500) (à tirer jusqu'en J417)

comme au début, tu as uniquement 2 valeurs -1, en J227 et J362

sur 417 lignes, y'a que 2 valeurs -1 seulement ! c'est pas terrible pour tester la macro :

ça fait qu'la macro n'aura que 2 décalages à faire !

dhany

Re,

lis d'abord mon post précédent, puis celui-ci.

voici ton fichier modifié :

Ctrl etravail effectué, mais y'a eu que 2 décalages seulement


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Alors là c'est à n'y rien comprendre @dhany. Je lance ton code sur le fichier d'exemple ça marche nickel, je le lance sur mon fichier de base, rien ne se passe ...

Mon fichier de base n'a qu'une seule colonne en plus au début, sinon c'est exactement pareil.

Marjow54

Bonjour,

Le principe des 2 procédures est identique (au numéro de colonne près suivant tes fichiers).

Vérifie tes données d'entrées.

Cdlt.

Rechercher des sujets similaires à "insertion vba"