Appliquer une macro sur plusieurs ligne

Signaler
Messages postés
24
Date d'inscription
mercredi 29 mai 2019
Statut
Membre
Dernière intervention
9 janvier 2021
-
Messages postés
24
Date d'inscription
mercredi 29 mai 2019
Statut
Membre
Dernière intervention
9 janvier 2021
-
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 ?

8 réponses


Bonjour
Vous avez juste a faire un copier coller autant de fois que vous voulez.

Coridalement
Messages postés
24
Date d'inscription
mercredi 29 mai 2019
Statut
Membre
Dernière intervention
9 janvier 2021

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.
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021
6 567
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
Messages postés
24
Date d'inscription
mercredi 29 mai 2019
Statut
Membre
Dernière intervention
9 janvier 2021

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.
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021
6 567
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
Messages postés
24
Date d'inscription
mercredi 29 mai 2019
Statut
Membre
Dernière intervention
9 janvier 2021
>
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021

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
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021
6 567
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

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
24
Date d'inscription
mercredi 29 mai 2019
Statut
Membre
Dernière intervention
9 janvier 2021

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.
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021
6 567
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
Messages postés
24
Date d'inscription
mercredi 29 mai 2019
Statut
Membre
Dernière intervention
9 janvier 2021

C'est pas grave si tu ne peux rien après à voir si quelqu'un d'autre à une solution.