Remplir une tableau a partir d'une seconde feuille du même classeur en VBA

Sisou27

XLDnaute Nouveau
Bonjour a tous,

j'ai besoin de vos lumières !!
En temps normal j'utilise index et equiv pour faire le remplissage d'un tableau sur ma feuille 1 a partir d'un fichier sur ma feuille 2. le problème est que les formules sont effacées par erreur régulièrement, j'avais pensé a une protection de feuille mais cela est trop contraignant.

j'ai donc pensé a une solution en VBA mais je ne suis que débutant donc a part utilisé une macro dans un boutton je suis un peu limité.

j'ai mis en pièce jointe le fichier concerné avec explicatives, je suis ouvert a toute proposition.

récapitulatif: j'ai besoin de remplir un tableau sur "feuille 1" avec des données de "feuille 2". pour cela j'aimerais le faire par ajout de ligne en cliquant sur une cellule d'une colonne "défini feuille2"(grise dans mon exemple) qui rempli seulement les cellules voulu dans le tableau en "feuille 1" (en couleur dans mon exemple). chaque ligne ajouté doit être ajouté a la suite de façon illimité sauf celle de excel ^^.
et enfin la possibilité de supprimer une ligne ou ajouté une ligne vierge dans feuille 1 sans que cela provoque des problème dans le tableau.

le fichier est plus claire que mes explications ^^ un fichier dur a expliquer mais facile a comprendre en le voyant.
merci par avance pour votre aide. je reste disponible pour toute questions ou fichier test.
 

Pièces jointes

  • Nouveau Feuille Microsoft Office Excel (2).xlsx
    14.5 KB · Affichages: 153
  • Nouveau Feuille Microsoft Office Excel (2).xlsx
    14.5 KB · Affichages: 172
  • Nouveau Feuille Microsoft Office Excel (2).xlsx
    14.5 KB · Affichages: 178

Dull

XLDnaute Barbatruc
Re : Remplir une tableau a partir d'une seconde feuille du même classeur en VBA

Salut Sisou 27, le Forum

Un essai en pièce jointe si j'ai bien compris à placer dans le Module de la Feuille 2
Option Explicit ' Oblige la déclaration des variables

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim DerLig As Long, C As Range, F1 As Worksheet, F2 As Worksheet ' Déclaration des variables
Set F1 = Feuil1 'Reconnait la feuille 1
Set F2 = Feuil2 'Reconnait la feuille 2
DerLig = F1.Range("B" & Rows.Count).End(xlUp).Row + 1 ' recherche la dernière cellule vide de la Col B
If Not Intersect(Target, F2.[L2:L100]) Is Nothing Then 'si la cellule active n'est pas compris entre L2 et L100 a adapter
Target = IIf(Target = "x", "", "x") 'met un x s'il n'y en a pas
Cancel = True ' Evite la curseur dans la cellule
If Target = "x" Then 'S'i y a un x dans la cellule active
With F1 ' avec la Feuille 1
.Range("B" & DerLig) = Target.Offset(, -1) 'met en Col B la cellule directement à gauche du x
.Range("D" & DerLig) = Target.Offset(, -11) 'met en Col D la 11 cellule à gauche du x
.Range("E" & DerLig) = Target.Offset(, -10) 'met en Col E la 10 cellule à gauche du x
.Range("F" & DerLig) = Target.Offset(, -9) 'met en Col F la 9 cellule à gauche du x
.Range("G" & DerLig) = Target.Offset(, -8) 'met en Col G la 8 cellule à gauche du x
End With
Else ' Sinon
Set C = F1.Cells.Find(What:=Target.Offset(, -1)) 'Recherche dans la feuille 1 la cellule directement à gauche de la cellule active (ou il y a un x)
If Not C Is Nothing Then C.EntireRow.Delete ' si la cellule n'est pas vide supprime la ligne entière
End If ' fin de la deuxième condition
End If ' fin de la première condition
End Sub

CAD

Un Dbl Click en Col L de la feuille2 met la ligne correspondante en Feuille1 à la dernière cellule vide de la colonne B
Un autre Dbl Click supprime la ligne de la feuille 1 correspondante à la cellule

Bonne Journée
 

Pièces jointes

  • Sisou27.xlsm
    22.2 KB · Affichages: 268

Sisou27

XLDnaute Nouveau
Re : Remplir une tableau a partir d'une seconde feuille du même classeur en VBA

Bonjour Dull,

Merci pour ton aide ^^
alors oui c'est exactement le remplissage que je voulais, j'ai vu que je pouvais adapter cela a des fichiers plus grands avec plus de lignes et c'est super !!!
j'ai une autre question, est il possible de figer une cellule je m'explique.
si je dois remettre a zéro la colonne des X "ajout" donc vide, j'aimerais que dans le tableau feuille 1 les lignes restent affichées et sauvegardé et que mes rajouts soient fait a la suite. une sorte de bouton ou clic dans cellule pour valider.
cela fera un historique consultable par les filtre que j'ai mis aux titre du tableau feuille1. si la liste descend jusqu'en bas de la feuille de calcul cela n'est pas grave car je n'atteindrais jamais plus de 10.000 lignes voir moins ^^

Déjà merci pour ton travail moi j'en étais la MDR
Sub test()
Dim Lig As Long
Lig = ActiveCell.Row
Sheets("Feuil1").Range("A8").Value = ActiveCell.Value
Sheets("Feuil1").Range("B8") = Range("K" & Lig).Value
Sheets("Feuil1").Range("D8") = Range("A" & Lig).Value
Sheets("Feuil1").Range("E8") = Range("B" & Lig).Value
Sheets("Feuil1").Range("F8") = Range("C" & Lig).Value
Sheets("Feuil1").Range("G8") = Range("E" & Lig).Value
End Sub
 

Discussions similaires