Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Pour chaque ligne renvoyer la valeur (si répondant à test logique) et concaténer

  • Initiateur de la discussion Initiateur de la discussion Zerky
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Zerky

XLDnaute Nouveau
Bonjour,

Je me remets d'une longue (très) longue absence sur excel et je transpire pour faire de simple chose. Voici mon probleme (en lien avec l'exemple ci-joint) :

J'ai ma liste d'élève (une colonne de prénom, j'ai noté dans une autre colonne si j'ai reçu ou non les devoirs. J'ai noté également dans une autre leurs emails.

Je voudrais donc pour chaque élève (ligne) où la valeur texte "pas rendu" apparaît que excel me rassemble les emails dans une seule cellule.

Là où je suis bloqué dans ma reflexion c'est que j'ignore si je dois d'abord passer par une étape intermédiaire ou si il est possible en une seule fois de répeter une fonction rechercher et de concatener les valeurs que le logiciel renvoie.

Merci d'avance
Cordialement
 

Pièces jointes

Re : Pour chaque ligne renvoyer la valeur (si répondant à test logique) et concaténer

Bonsoir Zerki et bienvenu sur le forum,

Avec cette macro :

VB:
Option Explicit

Private Sub CommandButton1_Click()
Dim i&
[A11].ClearContents
For i = 2 To Cells(Rows.Count, 3).End(xlUp).Row
  If Cells(i, 3) = "Pas rendu" Then [A11] = [A11] & ";" & Cells(i, 4)
Next
[A11] = Right([A11], Len([A11]) - 1)
End Sub

A+

Martial
 

Pièces jointes

Re : Pour chaque ligne renvoyer la valeur (si répondant à test logique) et concaténer

Bonsoir,

Avec : =SIERREUR(RECHERCHEV("Pas rendu";C2😀2;2;0)&";"😉&SIERREUR(RECHERCHEV("Pas rendu";C3😀3;2;0)&";"😉&SIERREUR(RECHERCHEV("Pas rendu";C4😀4;2;0)&";"😉&SIERREUR(RECHERCHEV("Pas rendu";C5😀5;2;0)&";"😉&SIERREUR(RECHERCHEV("Pas rendu";C6😀6;2;0)&";"😉&SIERREUR(RECHERCHEV("Pas rendu";C7😀7;2;0)&";"😉

on obtiens
email1;email3;

y a sans doute mieuxmais c'est plus cher à cette heure ...

édit, bonsoir Yaloo, le roi du vba
 
Dernière édition:
Re : Pour chaque ligne renvoyer la valeur (si répondant à test logique) et concaténer

Bonjour,

je ne sais pas combien il a d'élèves, mais ils n'ont pas l'air disciplinés,2 sur 6

lol, que dire d'autre

@+
 
Re : Pour chaque ligne renvoyer la valeur (si répondant à test logique) et concaténer

Grands merci pour vos réponses !

Tout d'abord, je ne m'y connais pas du tout en VBA, ça ne me dérange pas de l'utiliser, meme si je pensais qu'il existait un moyen simple en utilisant exclusivement des formules excel.

Sinon, effectivement, les élèves ne sont que des exemples, en réalité je travaille sur une base de donné de plus de 80 clients qui va sans doute s'agrandir, donc c'est clair que je ne peux répéter autant de fois l'expression qu'il y a de ligne ^^.

Edit : eh oui que ce soit les élèves ou les clients, les deux ne sont pas bien disciplinés 😛
 
Dernière édition:
Re : Pour chaque ligne renvoyer la valeur (si répondant à test logique) et concaténer

Re à tous,

En effet, s'il n'y a pas de données, ma macro plantait, il faut juste la modifier comme ceci :

VB:
Option Explicit

Private Sub CommandButton1_Click()
Dim i&
[A11].ClearContents
For i = 2 To Cells(Rows.Count, 3).End(xlUp).Row
  If Cells(i, 3) = "Pas rendu" Then [A11] = [A11] & ";" & Cells(i, 4)
Next
If [A11] <> "" Then [A11] = Right([A11], Len([A11]) - 1)
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…