insertion automatique de ligne et remplissage selon recherche H sur autre feuille

draale

XLDnaute Nouveau
Bonjour suite à réflexion et grace à vos formules j'ai decellé des problèmes dans mon fichier qui empêchait de faire ainsi.

Ma demande finale figure donc en bas de ce message.

Au plaisir de vous lire.
 

Pièces jointes

  • exemple.xlsx
    98 KB · Affichages: 122
  • exemple.xlsx
    98 KB · Affichages: 113
  • exemple.xlsx
    98 KB · Affichages: 112
Dernière édition:

job75

XLDnaute Barbatruc
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Bonjour draale,

Dans le code de Feuil2 :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B2:B65536]) Is Nothing _
  Or Target.Count > 1 Then Exit Sub
Dim lig As Variant
With Feuil1 'CodeName
  lig = Application.Match(Target, .[B:B], 0)
  If IsNumeric(lig) And UCase(Target.Offset(-1, 3)) <> "X" Then
    Target.EntireRow.Insert
    Target.Offset(-1, 3) = "X" 'repérage
    Target.Offset(-1, -1).Resize(, 4) = .Cells(lig - 1, 1).Resize(, 4).Value
  End If
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

  • exemple(1).xls
    278.5 KB · Affichages: 124
  • exemple(1).xls
    278.5 KB · Affichages: 129
  • exemple(1).xls
    278.5 KB · Affichages: 116

draale

XLDnaute Nouveau
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Merci mais je ne comprend pas, j'ai regardé le tableau je ne vois aucune modification a part "valider une cellule en colonne B" ni aucune formule ni macro ;)
Ce que je veux faire c'est une macro.
Merci de m'éclairer et merci pour ta réponse :)
 

job75

XLDnaute Barbatruc
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Re,

Ce que je veux faire c'est une macro.

Vous l'avez cher ami :)

Clic droit sur l'onglet Feuil2 et Visualiser le code.

La macro se déclenche quand on renseigne (ou valide) une cellule en colonne B.

Par exemple en Feuil2 sélectionnez B15, clic dans la barre de formule et touche <Entrée>.

A+
 

job75

XLDnaute Barbatruc
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Re,

Mais peut-être préférez-vous traiter toutes les cellules en même temps.

Dans ce cas clic sur le bouton qui déclenche cette macro :

Code:
Private Sub CommandButton1_Click()
Dim Target As Range, lig As Variant
For Each Target In Range("B2", [B65536].End(xlUp))
  With Feuil1 'CodeName
    lig = Application.Match(Target, .[B:B], 0)
    If IsNumeric(lig) And UCase(Target.Offset(-1, 3)) <> "X" Then
      Target.EntireRow.Insert
      Target.Offset(-1, 3) = "X" 'repérage
      Target.Offset(-1, -1).Resize(, 4) = .Cells(lig - 1, 1).Resize(, 4).Value
    End If
  End With
Next
End Sub
Fichier (2).

A+
 

Pièces jointes

  • exemple(2).xls
    282 KB · Affichages: 118
  • exemple(2).xls
    282 KB · Affichages: 114
  • exemple(2).xls
    282 KB · Affichages: 113

job75

XLDnaute Barbatruc
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Re,

2 compléments, le 1er pour accélérer s'il y a beaucoup de lignes à traiter :

Code:
Application.ScreenUpdating = False 'fige l'écran
le 2ème si l'on aboutit à la valeur placée en Feuil1!B2 :

Code:
If lig > 2 Then
Fichier (3)

A+
 

Pièces jointes

  • exemple(3).xls
    282 KB · Affichages: 93
  • exemple(3).xls
    282 KB · Affichages: 99
  • exemple(3).xls
    282 KB · Affichages: 92

draale

XLDnaute Nouveau
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Je viens de test je dois dire je suis carrément impressionné par ton code la.
le problème c'est que c'est un peu trop chaud pour moi de capter. je vais me contenter d'appuyer sur le bouton :)

Je teste tout ca en live demain sur mon gros fichier et te fait un retour definitif :)
 

draale

XLDnaute Nouveau
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

j'ai pas pu m'empecher de faire des essai il faut que je te précise une chose, en fait sur mon vrai fichier il y a beaucoup plus de colonne et je n'arrive pas a trouver dans la formule comment faire pour que cela se fasse sur toute les colonnes.

Pourrais tu m'aider ? merci encore.
 

job75

XLDnaute Barbatruc
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Bonjour draale, le forum,

comment faire pour que cela se fasse sur toute les colonnes.

Il faut qu'il y ait des en-têtes de colonnes en ligne 1 de Feuil1.

La macro peut ainsi déterminer le nombre de colonnes :

Code:
Private Sub CommandButton1_Click()
Dim N As Integer, Target As Range, lig As Variant
Application.ScreenUpdating = False 'fige l'écran
With Feuil1 'CodeName
  N = .Cells(1, .Columns.Count).End(xlToLeft).Column 'nombre de colonnes
  For Each Target In Range("B2", Cells(Rows.Count, 2).End(xlUp))
    lig = Application.Match(Target, .[B:B], 0)
    If IsNumeric(lig) And UCase(Target.Offset(-1, N - 1)) <> "X" Then
      If lig > 2 Then
        Target.EntireRow.Insert
        Target.Offset(-1, N - 1) = "X" 'repérage
        Target.Offset(-1, -1).Resize(, N) = .Cells(lig - 1, 1).Resize(, N).Value
      End If
    End If
  Next
End With
End Sub
Fichier (4).

A+
 

Pièces jointes

  • exemple(4).xls
    283 KB · Affichages: 71
  • exemple(4).xls
    283 KB · Affichages: 79
  • exemple(4).xls
    283 KB · Affichages: 80
Dernière édition:

job75

XLDnaute Barbatruc
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Re,

Une version (5) peut-être meilleure.

Le repérage des lignes copiées se fait d'abord en Feuil1.

Une ligne déjà copiée ne peut plus être copiée.

Ne pas oublier de mettre l'en-tête de colonne en E1 de Feuil1.

Code:
Private Sub CommandButton1_Click()
Dim N As Integer, Target As Range, lig As Variant
Application.ScreenUpdating = False 'fige l'écran
With Feuil1 'CodeName
  N = .Cells(1, .Columns.Count).End(xlToLeft).Column 'nombre de colonnes
  For Each Target In Range("B2", Cells(Rows.Count, 2).End(xlUp))
    lig = Application.Match(Target, .[B:B], 0)
    If IsNumeric(lig) Then
      If lig > 2 And UCase(.Cells(lig - 1, N)) <> "X" Then
        Target.EntireRow.Insert
        .Cells(lig - 1, N) .Resize(2) = "X" 'repérage des 2 lignes
        Target.Offset(-1, -1).Resize(, N) = .Cells(lig - 1, 1).Resize(, N).Value
      End If
    End If
  Next
End With
End Sub
A+
 

Pièces jointes

  • exemple(5).xls
    283 KB · Affichages: 129
  • exemple(5).xls
    283 KB · Affichages: 137
  • exemple(5).xls
    283 KB · Affichages: 143
Dernière édition:

draale

XLDnaute Nouveau
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Effectivement ça marche je t'avouerai que je n'arrive pas à comprendre ton code, par contre je te remercie je vais tester cela en live.
C'est en voyant ce genre de code que je me dis que je suis loin d'être bon sous excel^^.

Merci et je te ferai un retour définitif une fois testé sur le fichier géant :)
 

draale

XLDnaute Nouveau
Re : insertion automatique de ligne et remplissage selon recherche H sur autre feuill

Merci pour votre aide, vraiment.
Aussi vu ce que vous arrivez à faire, j'aurai une autre demande plus simple pour moi car hélas la macro me fait des incohérences sur mon vrai fichier.

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.
Je souhaiterai que la macro m'affiche seulement la ligne qu'il y avait au dessus et pas les autres.
Ainsi je suis sur d'arriver au bon résultat.
Si on peut faire ainsi cela me simplifie la tâche en fin de compte et collera à tous mes cas de figure.

Encore merci.
 

Pièces jointes

  • Nouvel exemple.xlsm
    84.9 KB · Affichages: 184

Discussions similaires

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux