VBA - Condition et Do Loop
questionVBA
Messages postés
4
Statut
Membre
-
questionVBA Messages postés 4 Statut Membre -
questionVBA Messages postés 4 Statut Membre -
Bonjour,
Je cherche à faire un programme pour mon association,
J'ai un onglet "TdB" dans lequel je recense tous les enfants de l'association. J'ai une ligne par enfant, et une colonne par activité.
Si l'enfant participe à l'activité je met un "X" sinon je ne mets rien.
Je souhaiterais pouvoir copier dans un autre onglet uniquement les enfants qui ont une croix dans l'activité définie, et ainsi avoir un onglet par activité avec la liste des enfant inscrit.
J'ai réussi a faire une macro pour une seule ligne
Sheets("TdB").Select
Range("I4").Select
If Range("I4") = "x" Then
Range("A4").Select
Selection.Copy
Sheets("PrésenceAS").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Là je copie uniquement le nom de l'enfant, je souhaiterais pouvoir copier A4:C4 sur A3:C3 et faire tourner la macro pour chaque ligne.
Je vous remercie d'avance
Je cherche à faire un programme pour mon association,
J'ai un onglet "TdB" dans lequel je recense tous les enfants de l'association. J'ai une ligne par enfant, et une colonne par activité.
Si l'enfant participe à l'activité je met un "X" sinon je ne mets rien.
Je souhaiterais pouvoir copier dans un autre onglet uniquement les enfants qui ont une croix dans l'activité définie, et ainsi avoir un onglet par activité avec la liste des enfant inscrit.
J'ai réussi a faire une macro pour une seule ligne
Sheets("TdB").Select
Range("I4").Select
If Range("I4") = "x" Then
Range("A4").Select
Selection.Copy
Sheets("PrésenceAS").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Là je copie uniquement le nom de l'enfant, je souhaiterais pouvoir copier A4:C4 sur A3:C3 et faire tourner la macro pour chaque ligne.
Je vous remercie d'avance
A voir également:
- VBA - Condition et Do Loop
- Excel cellule couleur si condition texte - Guide
- My people do - Télécharger - Organisation
- Bash do while ✓ - Forum Shell
- Incompatibilité de type vba ✓ - Forum Programmation
- Excel compter cellule couleur sans vba - Guide
4 réponses
Il y avait peut-être une solution plus "Excel" , mais celle ci devrait fonctionner:
i = 4
k = 3
While Worksheets("TdB").Cells(i, 1).Value <> ""
If Worksheets("TdB").Cells(i, 9).Value = "X" Then
For j = 1 To 3
Worksheets("PrésenceAS").Cells(k, j).Value = Worksheets("TdB").Cells(i, j).Value
k = k + 1
Next j
End If
i = i + 1
wend
Bon courage!
i = 4
k = 3
While Worksheets("TdB").Cells(i, 1).Value <> ""
If Worksheets("TdB").Cells(i, 9).Value = "X" Then
For j = 1 To 3
Worksheets("PrésenceAS").Cells(k, j).Value = Worksheets("TdB").Cells(i, j).Value
k = k + 1
Next j
End If
i = i + 1
wend
Bon courage!
CA merchera mieux comme ça:
As-tu une autre solution ?
i = 4
k = 3
While Worksheets("feuil2").Cells(i, 1).Value <> ""
If Worksheets("feuil2").Cells(i, 9).Value = "X" Then
For j = 1 To 3
Worksheets("feuil3").Cells(k, 1).Value = Worksheets("feuil2").Cells(j + i - 1, 1).Value
k = k + 1
Next j
End If
i = i + 3
Wend
As-tu une autre solution ?
J'ai rajouté deux petites lignes, car avec le programme, seule la colonne A était copiée,
Finalement ca donne ca :
Sub PAS()
i = 4
k = 3
While Worksheets("TdB").Cells(i, 1).Value <> ""
If Worksheets("TdB").Cells(i, 9).Value = "x" Then
For j = 1 To 3
Worksheets("PrésenceAS").Cells(k, 1).Value = Worksheets("TdB").Cells(j + i - 1, 1).Value
Worksheets("PrésenceAS").Cells(k, 2).Value = Worksheets("TdB").Cells(j + i - 1, 2).Value
Worksheets("PrésenceAS").Cells(k, 3).Value = Worksheets("TdB").Cells(j + i - 1, 3).Value
k = k + 1
Next j
End If
i = i + 3
Wend
End Sub
En fait le programme ne prend pas en compte la condition, il copie tout le monde, meme ceux pour lesquels la colonne I n'est pas cochée.
Finalement ca donne ca :
Sub PAS()
i = 4
k = 3
While Worksheets("TdB").Cells(i, 1).Value <> ""
If Worksheets("TdB").Cells(i, 9).Value = "x" Then
For j = 1 To 3
Worksheets("PrésenceAS").Cells(k, 1).Value = Worksheets("TdB").Cells(j + i - 1, 1).Value
Worksheets("PrésenceAS").Cells(k, 2).Value = Worksheets("TdB").Cells(j + i - 1, 2).Value
Worksheets("PrésenceAS").Cells(k, 3).Value = Worksheets("TdB").Cells(j + i - 1, 3).Value
k = k + 1
Next j
End If
i = i + 3
Wend
End Sub
En fait le programme ne prend pas en compte la condition, il copie tout le monde, meme ceux pour lesquels la colonne I n'est pas cochée.
Initialement :
C'est ce que faisait la première proposition, mais réponse:
correction dans ce sens, mais réponse:
Ben oui c'est le besoin exprimé
La prochaine fois précise bien le besoin au départ.
Bonne poursuite
je souhaiterais pouvoir copier A4:C4 sur A3:C3
C'est ce que faisait la première proposition, mais réponse:
le nom est copié, puis la ligne en dessous le prénom, puis la ligne en dessous la classe, au lieu d'être copié sur la meme ligne.
correction dans ce sens, mais réponse:
seule la colonne A était copiée
Ben oui c'est le besoin exprimé
La prochaine fois précise bien le besoin au départ.
Bonne poursuite
Dans l'onglet "PrésenceAS", le nom est copié, puis la ligne en dessous le prénom, puis la ligne en dessous la classe, au lieu d'être copié sur la meme ligne.