Macro avec selection

Bonjour,

Etant débutant en programmation VBA, je sollicite votre aide sur l’une de mes macros.

Le travail consiste à mettre en place une check-list d’impact sur d’autres documents en fonction d’un type de document « A » ou « B » ou « C » ou « D », etc...

Onglet 1 : la base de données « évolutive »

Celle-ci contient la liste et d’autres informations

Onglet 2 : la matrice à double entrée qui me permet de voir si :

« A » à un impact sur « B », « C », « D » dans le cas d’une modification de « A »

« B » à un impact sur « A », « C », « D » dans le cas d’une modification de « B »

« C » à un impact sur « A », « B », « D » dans le cas d’une modification de « C »

« D » à un impact sur « A », « B », « C » dans le cas d’une modification de « D »

Si la réponse est oui =1, si non =0

« A », « B », « C », « D » sont définis dans l’onglet 1 avec un ordre précis et rapatrié dans la matrice par formule.

Il y a de la place de disponible pour X nouveaux documents.

Onglet 3 : Les résultats

Cela regroupe l’ensemble des résultats possibles en fonction du travail effectué dans la matrice (onglet 2). 100% rapatrié par des formules de l’onglet 1 et 2.

Onglet 4 : La check-list (document de travail au quotidien)

Trame prédéfini et cellule de sélection du type de document « A » ou « B » ou « C » ou « D ».

Fonction de la macro :

Quand « A » est sélectionné dans la cellule « A4 » de l’onglet 4, alors copié les cellules « A3 :B59 » de l’onglet 3 et les coller via un collage spécial « A7 » de l’onglet 4 puis faire un filtre « non vide ».

Sinon

Quand « B » est sélectionné dans la cellule « A4 » de l’onglet 4, alors copié les cellules « C3 59 » de l’onglet 3 et les coller via un collage spécial « A7 » de l’onglet 4 puis faire un filtre « non vide ».

Et ainsi de suite.

Cela fonctionne très bien, mais il y a un « Mais »

Mon problème est suite à la mise à jour de l’onglet 1 (inversement de l’ordre des documents « D », « A », « C », «B » ou intégration d’un nouveau document « E » par exemple).

L’onglet 2 et l’onglet 3 vont ce mettre a jour (c’est ce que je souhaite), via des formules de recherche.

Comme il y a changement de position des types de document dans l’onglet 3 et que la macro n’est pas remise à jour au niveau des cellules copiées. Cela m’entraine une check-list fausse.

La macro copie et colle des cellules bien précise de l’onglet 3 et je souhaiterai que celle-ci copie et colle des cellules en fonction de la sélection « A4» de l’onglet 4.

Ci-dessous la macro que j'ai faite grâce à vos cours et exemples:

Sub Test_copie_colle()

'Suppression scintillement

Application.ScreenUpdating = False

'Macro test copie colle pour "A"

Sheets("Check-list").Select

If [Doc] = "A" Then 'Le nom du "type" doit etre identique à celui contenu dans l'onglet "Donnée". Attention au minuscule et majuscule.

Sheets("Masques").Select

Range("A3:B59").Select 'A modifier les lettres des colonnes en fonction leur emplacement dans l'onglet "Masque".

Selection.Copy

Sheets("Check-list").Select

Range("A7").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'Macro test copie colle pour "B"

ElseIf [Doc] = "B" Then

Sheets("Masques").Select

Range("C3:D59").Select

Selection.Copy

Sheets("Check-list").Select

Range("A7").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'Macro test copie colle pour "C"

ElseIf [Doc] = "C" Then

Sheets("Masques").Select

Range("E3:F59").Select

Selection.Copy

Sheets("Check-list").Select

Range("A7").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'Macro test copie colle pour "D"

ElseIf [Doc] = "D" Then

Sheets("Masques").Select

Range("G3:H59").Select

Selection.Copy

Sheets("Check-list").Select

Range("A7").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'Macro test copie colle pour "E"

ElseIf [Doc] = "E" Then

Sheets("Masques").Select

Range("I3:J59").Select

Selection.Copy

Sheets("Check-list").Select

Range("A7").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'Macro test copie colle pour "X1"

ElseIf [Doc] = "X1" Then

Sheets("Masques").Select

Range("K3:L59").Select

Selection.Copy

Sheets("Check-list").Select

Range("A7").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'Macro test copie colle pour "X2"

ElseIf [Doc] = "X2" Then

Sheets("Masques").Select

Range("M3:N59").Select

Selection.Copy

Sheets("Check-list").Select

Range("A7").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'Macro test copie colle pour ""

ElseIf [Doc] = "" Then

Sheets("Masques").Select

Range("C3:D59").Select

Selection.Copy

Sheets("Check-list").Select

Range("A7").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Else

End If

Range("A6:B6").Select

Application.CutCopyMode = False

Selection.AutoFilter

ActiveSheet.Range("$A$6:$B$63").AutoFilter Field:=1, Criteria1:="<>"

'Reprise scintillement

Application.ScreenUpdating = True

End Sub

Merci de m'avoir lu jusqu'au bout. Vous trouverez ci-joint un fichier test avec ma macro.

Si vous avez une solution, je suis preneur

Bonne journée.

Bonjour à tous,

Merci au 36 lecteurs de mon post.

Cependant, je n'ai pas eu de message en retour et je me pose des questions

Est ce que ma demande d'aide est clair par rapport à mon problème ?

Est ce que le post est trop long a lire ?

Est ce que c'est trop compliqué à mettre en œuvre ?

Est ce que c'est impossible a réaliser ?

Merci d'avance pour toute l'aide que vous pourriez m'apporter.

Cdt

Fredo38

Rechercher des sujets similaires à "macro selection"