VBA importation du contenu de la cellule

amapacha

XLDnaute Junior
Bonjour à tous

Des amis dans le forum m'ont aidé à faire ce classeur qui me permet d'afficher à partir d'une liste deroulante des donnée setrouvant sur la feuille ( Base ) par type de connection ( voir attachement ). Maintenant ce que je sveux c'est simple:

je veux que lorsqu'on selectionne par exmple PIN x PIN, dans la colonne photo les commentaires qui s'y trouve sur la feuille (Base) s'affiche aussi sur la feuil1 ce qui n'est pas le cas avec mon classeur actuelle.

On m'a dit que ce serait possible en VBA s'il vous plait les amis VBAistes aider moi.

Merci d'avance.
:confused::confused::confused::confused::(:(
 

Pièces jointes

  • amapacha.xlsx
    16.7 KB · Affichages: 23
  • amapacha.xlsx
    16.7 KB · Affichages: 38
  • amapacha.xlsx
    16.7 KB · Affichages: 29

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA importation du contenu de la cellule

Bonjour Amapacha, bonjour le forum,

Le code ci-dessous fonctionnerait si je pouvais effacer les formules dans la colonne F de l'onglet Feuil1. Mais une message me dit : Impossible de modifier une partie de matrice.
Du coup le code renvoie les commentaires après la dernière ligne du tableau en colonne F et je ne sais pas comment solutionner. Si ça peut t'aider :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim F As Object 'déclare la variable F (onglet Feuil1)
Dim B As Object 'déclare la variable B (onglet Base)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim PVL As Range 'déclare la variable PLV (PLage Visible)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

If Target.Address <> "$D$5" Then Exit Sub 'si le changement a lieu ailleurs qu'en D5, sort de la procédure
Set F = Sheets("Feuil1") 'définit l'onglet F
Set B = Sheets("Base") 'définit l'onglet B
DL = B.Cells(Application.Rows.Count, 3).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 3 (=C) de l'onglet B
Set PL = B.Range("C4:C" & DL) 'définit la plage PL
'filtre en C1 colonne C de l'onglet B avec la valeur de la cellule modifiée comme critère
B.Range("C3").AutoFilter Field:=1, Criteria1:=Target.Value
Set PLV = PL.Offset(0, 2).SpecialCells(xlCellTypeVisible) 'définit la plage PLV (plage des cellule visibles (non filtrées) de la plage PL
For Each CEL In PLV 'boucle sur toutes les cellules CEl de la plage PLV
    Set DEST = F.Cells(Application.Rows.Count, 6).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
    DEST.Value = CEL.Comment.Text 'récupère le commentaire de la cellule CEl dans DEST
Next CEL 'prochaine cellule de la boucle
B.Range("C3").AutoFilter 'supprime le filtre automatique
End Sub
 

amapacha

XLDnaute Junior
Re : VBA importation du contenu de la cellule

Bonjour et Merci Robert

si tu metre dans derniere colonne aussi ça m'arrangerais je n'ai jamais fait du VBA donc si tu peux m'expliquer comment metre les codes sur visual basic ce serai cool.
j'ai essayé mais à chaque fois on m'affiche soit END SUB attendu Soit il y a des lignes qui deviennent jaune comme sur la photo Capture vba.jpg
si tu m'explique la procedure peut etre que je vais adapter par rapport aux contraintes

Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA importation du contenu de la cellule

Bonjour Amapacha, bonjour le forum,

Le code modifié pour mettre les commentaires dans la dernière colonne (colonne N) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim F As Object 'déclare la variable F (onglet Feuil1)
Dim B As Object 'déclare la variable B (onglet Base)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim PVL As Range 'déclare la variable PLV (PLage Visible)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

If Target.Address <> "$D$5" Then Exit Sub 'si le changement a lieu ailleurs qu'en D5, sort de la procédure
Set F = Sheets("Feuil1") 'définit l'onglet F
Set B = Sheets("Base") 'définit l'onglet B
DL = B.Cells(Application.Rows.Count, 3).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 3 (=C) de l'onglet B
F.Range("N9:N" & DL).ClearContents 'efface les anciens commentaires
Set PL = B.Range("C4:C" & DL) 'définit la plage PL
'filtre en C1 colonne C de l'onglet B avec la valeur de la cellule modifiée comme critère
B.Range("C3").AutoFilter Field:=1, Criteria1:=Target.Value
Set PLV = PL.Offset(0, 2).SpecialCells(xlCellTypeVisible) 'définit la plage PLV (plage des cellule visibles (non filtrées) de la plage PL
For Each CEL In PLV 'boucle sur toutes les cellules CEl de la plage PLV
    Set DEST = F.Cells(Application.Rows.Count, 14).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
    DEST.Value = CEL.Comment.Text 'récupère le commentaire de la cellule CEl dans DEST
Next CEL 'prochaine cellule de la boucle
B.Range("C3").AutoFilter 'supprime le filtre automatique
End Sub
Le fichier avec le code dans le composant VBA Feuil1(Feuil1). Pour le voir, clique avec le bouton droit sur l'onglet Feuil1 et choisis l'option Visualiser le code.
 

Pièces jointes

  • Amapacha_v01.xlsm
    25.6 KB · Affichages: 23

Discussions similaires

Réponses
6
Affichages
422

Statistiques des forums

Discussions
312 485
Messages
2 088 805
Membres
103 971
dernier inscrit
abdazee