Bonjour le forum,
Bonjour à tous,
Je cherche un code VBA à mettre sur la feuille 2 pour y importer des données de la feuille 1 en fonction de lemplacement designé sur feuille 3.
Pour imager: si le code en colonne A2:A500 de la feuille3 existe en colonne B2:B100 de la feuille1, alors le nom ecrit en colonne C2:C100 de la feuille1 est importé dans une cellule A2:J20 de la feuille2 en foncton de la place désignée en colonne B2:B500 de la feuille3.
Les donnés en feuille 1 étant vouées à être modifiées régulièrement le code VBA devra mettre à jour automatiquement les noms sur la feuille2 en supprimant les noms dans les cellules pour lesquelles le code en colonne A de la feuille3 n'est plus repris en colonne B de la feuille1 et en ajoutant les noms dans les cellules feuille 2 pour les nouveaux codes ajoutés en feuille1.
Merci d'avance pour votre aide.
Dudesson.
Re
MR PIERRE, je reviens vers vous car j'ai un peu de mal pour adapter le code VBA dans mon fichier à partir de l'exemple.
J'ai donc mis les codes de la feuille3 dans les mêmes positions que dans mon fichier.
Donc codes colonne E =places en colonne L et ainsi de suite.
Un dernier coup de main s'il vous plaît.
Merci d'avance.
Dudesson.
sur la feuille "Feuil2", saisir la formule matricielle ci-dessous dans la cellule A2. C'est une formule matricielle à valider par la combinaison des trois touche Ctrl+Maj+Entrée au lieu de la seule touche Entrée
copier la cellule A2 pour la recopier (en formule) sur la plage B2:J2
copier la plage A2:J2 pour la recopier (en formule) sur la plage A3:J20
Merci pour cette contribution. Ça fonctionne !
Jespère une solution en VBA car dans mon fichier, un autre code VBA de la feuille2 ajoute des commentaires aux cellules non vides en fonction d'autres données sur la feuille1.
Encore merci pour vos réactions.
Amicalement.
Dudesson.
Private Sub Worksheet_Activate()
Dim E As Range, C As Range
Application.ScreenUpdating = 0
[A2:J20] = ""
For Each C In Feuil1.[nom]
Set E = [CODES].Find(C(1, 0))
If Not E Is Nothing Then Range(E(1, 8)) = C
Next
Private Sub Worksheet_Activate()
Dim E As Range, C As Range
Application.ScreenUpdating = 0
[A2:J20] = ""
For Each C In Feuil1.[nom]
Set E = [CODES].Find(C(1, 0))
If Not E Is Nothing Then Range(E(1, 8)) = C
Next
Bonsoir dites moi s'il vous plaît comment je modifie le code VBA pour que la colonne pour le code soit le colonne E de la feuille1 et non la colonne B.
Merci.
Amicalement
Dudesson.
Une version v2a qui permet de paramétrer où sont les différents tableaux des données sources. La v2a est aussi plus rapide.
Voir en tête de code, les différentes constantes à renseigner.
Dans le fichier (pour l'exemple), sur la feuille "Feuil1", la colonne des noms est en colonne C (à partir de C2) et la colonne des codes est la colonne E (à partir de E2).
edit : une version v2b qui met aussi à jour le tableau quand on active Feuil2.
Une version v2a qui permet de paramétrer où sont les différents tableaux des données sources. La v2a est aussi plus rapide.
Voir en tête de code, les différentes constantes à renseigner.
Dans le fichier (pour l'exemple), sur la feuille "Feuil1", la colonne des noms est en colonne C (à partir de C2) et la colonne des codes est la colonne E (à partir de E2).
edit : une version v2b qui met aussi à jour le tableau quand on active Feuil2.
Bonjour.
Je viens d'ajouter un code VBA pour ajouter un commentaire sur la cellule active de la feuille2.
Ça fonctionnait ailleurs mais là j'ai un Bug sans doute à cause du code qui ajoute les noms. Pouvez-vous me le débloquer s'il vous plaît ?
Merci d'avance.
Amicalement.
Dudesson.
Pièces jointes
Copie de Dudesson- recherche par position- v2b.xlsm