Appliquer une macro sur plusieurs ligne

Fermé
Steinned Messages postés 24 Date d'inscription mercredi 29 mai 2019 Statut Membre Dernière intervention 9 janvier 2021 - 4 janv. 2021 à 11:10
Steinned Messages postés 24 Date d'inscription mercredi 29 mai 2019 Statut Membre Dernière intervention 9 janvier 2021 - 5 janv. 2021 à 13:06
Bonjour à tous,

Je démarre sur VBA et je cherche à appliquer une macro sur plusieurs ligne et elle doit s'adapter en fonction de la ligne.

J'ai fait un module où j'ai renseigner le code suivant :


Option Explicit
Option Compare Text

'Permet de faire une rechercheV pour les matériaux

Sub Matériaux()

Dim Ligne As Integer

Range("o5:o2000,q5:q2000") = Empty

For Ligne = 508 To Range("a9999").End(xlUp).Row

If Range("a" & Ligne) = Range("m5") Then

Range("m5") = Range("a" & Ligne)
Range("o5") = Range("b" & Ligne)
Range("q5") = Range("c" & Ligne)

Exit Sub

End If

Next Ligne

End Sub


Puis pour faire la recherche en continue j'utilise ce code :

</code>
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("m5")) Is Nothing Then

Matériaux

End If


End Sub
</code>

est-ce que vous auriez une idée pour que je puisse faire ça sans avoir à écrire 2000 fois le même code ?
A voir également:

8 réponses

informaticienNormand
4 janv. 2021 à 11:11
Bonjour
Vous avez juste a faire un copier coller autant de fois que vous voulez.

Coridalement
0
Steinned Messages postés 24 Date d'inscription mercredi 29 mai 2019 Statut Membre Dernière intervention 9 janvier 2021
4 janv. 2021 à 11:51
C'est justement pour trouver une autre solution que je demande de l'aide comme indiqué dans mon premier message. Car je vais avoir 2000 lignes à traiter avec cette macro.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
4 janv. 2021 à 12:01
Bonjour,

tu devrais déposer un fichier anonymisé (données bidons) sur cjoint.com et coller ici le lien fourni.
En expliquant ce que tu veux faire car avec ton code c'est un peu flou.
Explique aussi le choix du SelectionChange car il ne parait pas judicieux.
Perso je serai absent cette am mais ça servira aux suivants
eric
0
Steinned Messages postés 24 Date d'inscription mercredi 29 mai 2019 Statut Membre Dernière intervention 9 janvier 2021
4 janv. 2021 à 16:11
Je te remercie et je vais suivre ton conseil, voici le lien de mon fichier : https://cjoint.com/c/KAepbivY3Ea

Le but est de pouvoir écrire dans la colonne "Nom" un matériau et en fonction de ce nom faire une RechercheV qui me donnera les informations pour la colonne "Numérique" et "Groupe de matériau". Comme je ne veux pas utiliser de bouton, j'ai préféré que ça soit en automatique d'où le choix de SelectionChange. Après si je suis passé en VBA c'est par ce que je voulais pouvoir directement renseigner la colonne sans avoir à supprimer la formule dans la cellule. Après je ne cache pas que je démarre sur VBA et que le code est partiellement récupéré à droite et à gauche puis réassembler par mes soins. Enfin l'idée est de pouvoir appliquer la rechercheV sur l'ensemble de la colonne "Nom" sans avoir à recopier X fois la macro.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié le 4 janv. 2021 à 19:52
Je ne pense pas que vba soit nécessaire pour ça mais c'est plutôt incomplet.
Déjà ton tableau de matériaux doit être sur une autre feuille.
Tu saisis P265GH qu'on ne retrouve pas dans ta table. Comment veux-tu faire une recherche ?
1.0425 il sort d'où ? Numérique est absent du 2nd tableau...
Bref, on ne peut rien faire avec ce fichier et des explications incomplètes

Ton 2nd tableau doit avoir :
Nom Numérique Groupe de matériaux
et un simple Recherchev() suffira
eric
0
Steinned Messages postés 24 Date d'inscription mercredi 29 mai 2019 Statut Membre Dernière intervention 9 janvier 2021 > eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024
5 janv. 2021 à 09:59
Bonjour Eric,

Si je tiens à faire une commande VBA c'est pour pouvoir écrire dans la cellule concernée sans supprimer systématiquement la formule et donc gagner en ergonomie.

Si le tableau des matériaux n'est pas dans un autre onglet c'est car je ne sais pas appeler une feuille dans la formule que j'utilise, j'ai donc contourné la difficulté et tu peux le trouver à la ligne 508. Enfin la désignation numérique d'un matériau et comme son nom, c'est une désignation.

Pour faire simple la formule que j'utilise fonctionne mais pour l'appliquer à l'ensemble de ma feuille il faut que je la recopie entre 500 et 2000 fois ce qui va alourdir nettement mon fichier pour un gain très peu substantiel. Donc je cherche à faire évoluer la formule pour que chaque ajout d'un matériau dans la colonne "Nom" déclenche une rechercheV dans la base matériau.

Steinned
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié le 5 janv. 2021 à 10:51
Bonjour,

Si je tiens à faire une commande VBA c'est pour pouvoir écrire dans la cellule concernée sans supprimer systématiquement la formule
une cellule c'est soit une formule, soit une saisie.
Ici je ne vois pas de raison pour remplacer les formules par des saisies, elles doivent donc toujours être présentes.

Si le tableau des matériaux n'est pas dans un autre onglet c'est car je ne sais pas appeler une feuille dans la formule que j'utilise
Ca ce n'est pas le plus dur. Il suffit d'aller sélectionner les paramètres à la souris et excel l'écrit correctement

Pour faire simple la formule que j'utilise fonctionne mais pour l'appliquer à l'ensemble de ma feuille il faut que je la recopie entre 500 et 2000 fois ce qui va alourdir nettement mon fichier
Déjà tu n'as pas à préparer des lignes vides d'avance.
2000 lignes avec des Recherchev() ne font pas peur à excel. D'autant plus qu'une formule n'est évaluée que seulement si des changements la concernant ont lieu.

En plus tu as mis ta plage en Tableau structuré (c'est bien).
Dès que tu démarres une saisie (sans sauter de ligne) une nouvelle ligne s'ajoute automatiquement à ton tableau en recopiant formules et formats.

Recherche d'abord dans les possibilités d'excel et apprend au fur et à mesure, vba ne doit pas servir à compenser des lacunes.
https://www.cjoint.com/c/KAfjTdWlsTW
eric

PS : je n'ai mis que Numérique ne sachant pas où allaient les autres.
Complète avant de tester l'ajout d'une saisie

0
Steinned Messages postés 24 Date d'inscription mercredi 29 mai 2019 Statut Membre Dernière intervention 9 janvier 2021
5 janv. 2021 à 11:10
Merci pour ton fichier, mais j'ai déjà un fichier qui fonctionne avec formule. Si en VBA je démarre sur les formules je commence à correctement maitriser.

Ce qui m'intéresse dans le fait de pouvoir directement saisir les informations c'est de pouvoir les adapter ou de copier coller directement une plage d'information sur celle-ci(la colonne "Nom" dans mon cas). Puis par la suite une fois cette action faite d'utiliser des formules car plus stable et compréhensible pour traiter les informations.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
5 janv. 2021 à 11:42
je commence à correctement maitriser
si je peux me permettre un jugement : tu as encore un long chemin.
De toute façon on n'a jamais fini d'apprendre sur excel.

Ce qui m'intéresse dans le fait de pouvoir directement saisir les informations c'est de pouvoir les adapter ou de copier coller directement une plage d'information sur celle-ci(la colonne "Nom" dans mon cas).
je ne vois pas ce qui t'empêche de le faire.
Tu colles 5 noms à partir de M6, 5 lignes se créent avec les formules.
Tu colles 3 noms sur des lignes existantes, les formules se mettent à jour toute seules.
Que veux-tu faire de mieux avec VBA ?
Désolé mais je n'irais pas plus loin, ça ne serait pas te rendre service que t'aider dans cette voie.
eric
0
Steinned Messages postés 24 Date d'inscription mercredi 29 mai 2019 Statut Membre Dernière intervention 9 janvier 2021
Modifié le 5 janv. 2021 à 13:47
C'est pas grave si tu ne peux rien après à voir si quelqu'un d'autre à une solution.
0