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

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

  • Exempleemeves.xlsx
    9.3 KB · Affichages: 62

Yaloo

XLDnaute Barbatruc
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

  • Exempleemeves.xlsm
    20.7 KB · Affichages: 66

st007

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

Bonsoir,

Avec : =SIERREUR(RECHERCHEV("Pas rendu";C2:D2;2;0)&";";)&SIERREUR(RECHERCHEV("Pas rendu";C3:D3;2;0)&";";)&SIERREUR(RECHERCHEV("Pas rendu";C4:D4;2;0)&";";)&SIERREUR(RECHERCHEV("Pas rendu";C5:D5;2;0)&";";)&SIERREUR(RECHERCHEV("Pas rendu";C6:D6;2;0)&";";)&SIERREUR(RECHERCHEV("Pas rendu";C7:D7;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:

Zerky

XLDnaute Nouveau
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 :p
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
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+
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1