Loop avec critères vba
Résolu
Anthelm
Messages postés
202
Statut
Membre
-
via55 Messages postés 14730 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14730 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
Je souhaiterai faire un boucle pour concatener les critères en jaune dans la dernière colonne "Code", pour un TCD.

On peut être amené à insérer d'autres colonnes (d'autres critères), et je me demande quel serait le bon moyen de faire une loop avec seulement les colonnes ciblées?
En partant de Range("Tableau1[#Headers,[Type]]") et offset, peut être?
J'aimerai mettre la macro dans une feuille TCD, quand on l'active, donc il faudrait qu'elle ne soit pas trop lente idéalement :)
Si vous avez une piste...
Merci beaucoup!
(Edit, je pense qu'il faudrait faire un array mais je ne sais pas du tout comment ça marche. Si vous aviez un début de solution, je pourrais peut être bricoler...)
Je souhaiterai faire un boucle pour concatener les critères en jaune dans la dernière colonne "Code", pour un TCD.

On peut être amené à insérer d'autres colonnes (d'autres critères), et je me demande quel serait le bon moyen de faire une loop avec seulement les colonnes ciblées?
En partant de Range("Tableau1[#Headers,[Type]]") et offset, peut être?
J'aimerai mettre la macro dans une feuille TCD, quand on l'active, donc il faudrait qu'elle ne soit pas trop lente idéalement :)
Si vous avez une piste...
Merci beaucoup!
(Edit, je pense qu'il faudrait faire un array mais je ne sais pas du tout comment ça marche. Si vous aviez un début de solution, je pourrais peut être bricoler...)
Configuration: Windows / Firefox 72.0
A voir également:
- Loop avec critères vba
- Fruity loop - Télécharger - Édition & Montage
- Excel compter cellule couleur sans vba - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
3 réponses
Bonjour Anthelm
Je peux te proposer une fonction personnalisée ( à mettre dans un Module de l'éditeur VBA)
Ainsi dans ton exemple = concatA(C3:F3) en K3 renverrait FE1-1920-1080-
Cdlmnt
Via
Je peux te proposer une fonction personnalisée ( à mettre dans un Module de l'éditeur VBA)
Function concatA(plage As Range) For Each cell In plage cod = cod & cell.Value & "-" Next concatA = cod End Function
Ainsi dans ton exemple = concatA(C3:F3) en K3 renverrait FE1-1920-1080-
Cdlmnt
Via
Bonjour Anthelm
Pourquoi passer par une macro ?
Rajoute une colonne vide entre Critère et Commentaires, ensuite tu peux même masquer cette nouvelle colonne H
En L3 la formule = CONCAT(C3:H3) à étirer vers le bas
Si par la suite tu rajoutes des colonnes de critère avant la colonne H elles seront prises en compte dans la concaténation
Cdlmnt
Via
Pourquoi passer par une macro ?
Rajoute une colonne vide entre Critère et Commentaires, ensuite tu peux même masquer cette nouvelle colonne H
En L3 la formule = CONCAT(C3:H3) à étirer vers le bas
Si par la suite tu rajoutes des colonnes de critère avant la colonne H elles seront prises en compte dans la concaténation
Cdlmnt
Via
Bonjour Via,
Ca va poser problème, car le code sera:
FE119201080
Donc, je ne pourrais pas retrouver ou est la largeur et ou est la hauteur. Pareil si j'ai des réponses "Oui" aux critères.
CONCAT(C3:H3) seulement ne pourra pas, je prend un exemple bête mais pour donner l'idée, différencier:
FE1-1010-100 et FE1-10-10100, car ça donnera FE11010100 dans les deux cas.
Il faut donc faire effectivement quelque chose proche de CONCAT(C3:H3) , mais en intercalant quelque chose:
FE1Hauteur1920Largeur1080 ...
C'est pour ça que je pensais partir sur une macro!
Ca va poser problème, car le code sera:
FE119201080
Donc, je ne pourrais pas retrouver ou est la largeur et ou est la hauteur. Pareil si j'ai des réponses "Oui" aux critères.
CONCAT(C3:H3) seulement ne pourra pas, je prend un exemple bête mais pour donner l'idée, différencier:
FE1-1010-100 et FE1-10-10100, car ça donnera FE11010100 dans les deux cas.
Il faut donc faire effectivement quelque chose proche de CONCAT(C3:H3) , mais en intercalant quelque chose:
FE1Hauteur1920Largeur1080 ...
C'est pour ça que je pensais partir sur une macro!
Quelque chose du type:
For each row in Tableau1
Code = "Entête" + première cellule + 2eme entete + 2 eme cellule...
Déjà ça, ensuite j'essaierai de faire en sorte que les cellules vides ne soient pas comptées.
J'essaierai d'avancer comme ça en fin d'après midi aujourd'hui, mais si tu as une idée ou un début de code, je suis vraiment preneur.
Je pense partir sur une loop avec offset, mais j'ai peur que ce soit pas "optimal", même si ça devrait marcher. Rien que ton avis sur ça serait précieux car j'ai peur de passer des heures dessus et me rendre compte après que ce n'était pas la bonne méthode!
J'hésite à essayer d'utiliser "Array", aussi.
For each row in Tableau1
Code = "Entête" + première cellule + 2eme entete + 2 eme cellule...
Déjà ça, ensuite j'essaierai de faire en sorte que les cellules vides ne soient pas comptées.
J'essaierai d'avancer comme ça en fin d'après midi aujourd'hui, mais si tu as une idée ou un début de code, je suis vraiment preneur.
Je pense partir sur une loop avec offset, mais j'ai peur que ce soit pas "optimal", même si ça devrait marcher. Rien que ton avis sur ça serait précieux car j'ai peur de passer des heures dessus et me rendre compte après que ce n'était pas la bonne méthode!
J'hésite à essayer d'utiliser "Array", aussi.
C'est excellent pour trier les doublons et afficher le code de manière lisible.
Tu penses qu'avec 1000-1500 lignes ça restera utilisable?
Oui 1500 lignes ce n'est pas beaucoup
A tester quand même