Insertion automatique de ligne et remplissage

Demande remplacée par ma dernière en bas du sujet merci à tous

Salut Draale,

Voici un exemple de ce que l'on peut faire, mais il y a encore des inconnues : Est-ce que sur ta feuille 2, les lignes commencent toujours à la ligne 11, etc. ?

Mais dis déjà ce que tu en penses.

Cordialement

30draale-v1.xlsm (107.31 Ko)

Bonsoir à tous, salut Yvouille,

il y a une centaine de doublons dans la colonne "B"

ici, j'utilise la colonne "A" où il n'y en a pas

Pour éviter une répétition de la macro (qui donnerait n'importe quoi),

j'ai ajouté un contrôle en colonne "H" (vu)

Sub InsertLigne()
Dim Lg&, i%, c As Range
    Application.ScreenUpdating = False
    Lg = Range("a" & Rows.Count).End(xlUp).Row

    For i = Lg To 11 Step -1
        Set c = Sheets(1).Range("a:a").Find(Cells(i, "a"), LookIn:=xlValues)
        If Not c Is Nothing And Cells(i, "h") = "" Then
            Cells(i, "h") = "vu"    'contrôle
            Rows(i).Insert
            Sheets(1).Rows(c.Row - 1).Copy Destination:=Rows(i)
        Else: i = i - 1             'saute une ligne si déjà vu
        End If
    Next i
End Sub

Amicalement

Claude

Merci pour ta réponse, pourquoi quand je le fais avec mes vraies données cela ne marche pas ?

J'ai mis une nouvelle colonne A car l'autre n'existe pas dans le fichier vrai.

Voici le vrai fichier.

Merci d'avance

Bonjour,

dans la Feuille 1, colonne "A", tu as une virgule comme séparateur,

alors que dans Feuille 2 c'est un point

on ne peux pas prendre la colonne "B" ?

édit:

peut-on connaitre le but de l'opération ?

Claude

Salut Claude par manque d'expérience j'avais mal formulé ma demande je pense. en fait j'ai demandé quelque chose qui pouvait se faire de manière plus simple.

Sur l'exemple que je vous fourni j'ai appliqué un filtre sur la colonne N pour n'afficher que les valeurs 1.

Du coup toutes les autres lignes se retrouvent masquées bien sur.

Mon but final est de créer une macro qui m'affiche seulement la ligne qu'il y avait au dessus de la valeur 1 (en plus de celle ou il y a le 1) et pas les autres.

Donc je voudrai me retrouver avec les lignes ou ya 1 en colonne N + celle du dessus uniquement affichées.

Merci à vous et désolé d'avoir fait deux posts pour un peu la même chose je ne pensais pas mal faire.

Amicalement,

Patrick

26nouvel-exemple.xlsm (84.85 Ko)

Bonjour,

Tu te mélange les crayons parmi tous tes postes,

là, tu nous mets un nouveau fichier pour lequel j'ai vu passer un autre poste.

Ferme l'un ou l'autre, qu'on puisse suivre !

en ne mettant qu'un seul fichier

Claude

C'est déja fait Claude j'ai d'ailleurs remercier Yvouille pour m'avoir signalé qu'il valait mieux tout poster sur le même sujet.

Sinon je n'ai fait que 2 postes donc je me suis pas mélangé les pinceaux mais je tiens à vous remercier pour l'aide que vous m'apportez.


Draale a écrit :

Salut Claude par manque d'expérience j'avais mal formulé ma demande je pense. en fait j'ai demandé quelque chose qui pouvait se faire de manière plus simple.

Merci à vous et désolé d'avoir fait deux posts pour un peu la même chose je ne pensais pas mal faire.

Amicalement,

Patrick

Claude si tu regardes un peu plus haut, je me suis déjà excusé pour avoir créer deux topics mais peut etre n'avais tu pas lu mon message

re,

Donc, on continue sur ce fil, avec le dernier fichier joint,

comment est remplie la colonne "N", c'est toi qui choisis ?

au départ, elle est vide ?

à te relire

Claude

Non quand je reçois le fichier il y a un 0 ou un 1 dans cette colonne.

Du coup moi je filtre toutes les lignes ou il y a un 1 dans N, mais je sais pas comment faire pour faire réapparaitre juste celle qu'il y avait au dessus, nécessaire à mon analyse ultérieure.

J'espère que vous me comprenez.

re,

Il faudrait rajouter un "1" (attention c'est du texte) sur la ligne du dessus,

une macro sera faire cela, si çà ne gène pas pour la suite ?

Si tu disais où tu veux en venir ?

Claude

Bonjour j'ai trouvé la solution je vous la fait partager.

Sub Cacher()

    Dim I As Long

    For I = 2 To Worksheets("Feuil1").Cells(Rows.Count, 14).End(xlUp).Row

        If Cells(I, 14).Value = 1 Then

            Cells(I, 14).Offset(-1, 14).EntireRow.Hidden = False
            Cells(I, 14).EntireRow.Hidden = False

        Else
            Cells(I, 14).EntireRow.Hidden = True

        End If

    Next I

End Sub

Patrick


Claude si cela ne complète pas tes questions dis le moi je continue de suivre le fil.

Merci pour tes retours.

Bonjour,

J'avais commencé à regarder

Sub Filtre()
Dim Lg&, cL&, i&
    Application.ScreenUpdating = False
        On Error Resume Next
    ActiveSheet.ShowAllData                             'libère le filtre
        On Error GoTo 0
    Lg = Range("a" & Rows.Count).End(xlUp).Row          'dernière ligne
    cL = Cells(1, Columns.Count).End(xlToLeft).Column   'dernière colonne

    Columns(cL + 1).Resize(, 2).Insert                  'colonnes temporaires
    Columns(cL + 1).Resize(, 2).NumberFormat = "General"
    Cells(2, cL + 2) = "=" & Cells(2, cL + 1).Address(RowAbsolute:=False) & "=1"  'critère

    '--- repère et écrit les 1 après la dernière colonne ---
    For i = 3 To Lg
        If Cells(i, "n") = "1" Then Cells(i - 1, cL + 1).Resize(2, 1) = 1
    Next i
    '-- filtre ---
    Range(Cells(1, "a"), Cells(Lg, cL + 1)).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
    Range(Cells(1, cL + 2), Cells(2, cL + 2)), Unique:=False
    Columns(cL + 1).Resize(, 2).Delete
End Sub

Bonne journée

Claude

29draale-filtre.xlsm (99.12 Ko)

Bonjour Claude,

Encore merci pour le temps que tu as passé pour moi.

Ta solution est vraiment sympa et rapide à l'utilisation c'est celle que je vais garder

n'oublie pas la petite formalité

a resolu3
Rechercher des sujets similaires à "insertion automatique ligne remplissage"