Appliquer une macro sur plusieurs ligne
Steinned
Messages postés
24
Date d'inscription
Statut
Membre
Dernière intervention
-
Steinned Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
Steinned Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
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 :
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 ?
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:
- Appliquer une macro sur plusieurs ligne
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Comment supprimer une application préinstallée sur android - Guide
- Desinstaller une application sur windows - Guide
8 réponses
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.
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
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
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.
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.
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.
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
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