Bonjour, j’aimerai remplir des cellules en fonction d’autres cellules
Mes données se trouvent dans la colonne E (et commence ligne ligne 3)
Pour l'instant rien ne s'affiche dans la cellule adjacente malheureusement.
Voici ce que j’ai codé, merci d'avance !
VB:
For j = 3 To Range("E100") Step 1
Select Case Cells(j, 5)
Case « Nounours » ou « doudou »
Cells(j, 6) = « Peluche »
Case « Action-Man » ou « Barbie »
Cells(j, 6) = « Jouet »
End Select
Next j
Sub test_OK()
Dim j&
For j = 3 To Cells(Rows.Count, "E").End(3).Row
Select Case UCase(Cells(j, 5))
Case Is = "NOUNOURS", "DOUDOU"
Cells(j, 6) = "Peluche"
Case Is = "ACTION-MAN", "BARBIE"
Cells(j, 6) = "Jouet"
Case Else
'
End Select
Next j
End Sub
Merci à tous pour vos réponses et plus particulièrement à staple1600 car il répondait mieux à ma demande qui était peu précise je vous l'accorde.
J'aimerai donc la reformuler plus clairement pour m'aider au mieux dans mon module.
Suite à un paquet de données que je reçois, j'aimerai qu'un tri "automatique" s'opère avec le VBA.
Cependant les données sont un peu en bazar. Par exemple il n'y a pas de continuité dans les lignes donc pour créer une boucle c'est un poil compliqué (enfin à mon niveau).
J'aimerai que les données en colonne E soit classé en catégorie dans la colonne adjacente F.
La réponse de Staple1600 est sûrement superbe pour l’énoncé de base mais je n'arrive pas à la transposer correctement.
Voici le bout de code qui pose problème:
VB:
For j = 3 To Cells(Rows.Count, "E").End(3).Row
Select Case (Cells(j, 5))
Case Left(Cells(j, 5), 14) = " CB MC DONALD'S"
Cells(j, 6) = "Fast Food"
Case Left(Cells(j, 5), 14) = " CB MGP*Pumpkin"
Cells(j, 6) = "Pumpkin"
Case Else
End Select
Next j
Je joins un fichier exemple avec le code VBA entier.
Déjà à la base si on reprend mon exemple tu aurais du écrire
VB:
For j = 3 To Cells(Rows.Count, "E").End(3).Row
Select Case Left(Cells(j, 5), 14)
Case Is = " CB MC DONALD'S"
Cells(j, 6) = "Fast Food"
Case Is = " CB MGP*Pumpkin"
Cells(j, 6) = "Pumpkin"
Case Else
End Select
Next j
PS: Je parle juste de la syntaxe (je n'ai pas ouvert la PJ)
J'ai juste parlé de syntaxe
(et j'ai précisé que je n'avais pas testé)
Il n'y a pas mille façons d'écrire un Select Case
La preuve avec ce petit test (qui fonctionne, non ?)
VB:
Sub Tests()
Dim Chaine, i&
Chaines = Array(" CB MC DONALD'S", "CB MGP*Pumpkin")
For i = 0 To 1
Select Case Left(Trim(Chaines(i)), 14)
Case Is = "CB MC DONALD'S"
MsgBox "Fast Food"
Case Is = "CB MGP*Pumpkin"
MsgBox "Pumpkin"
Case Else
End Select
Next
End Sub
Donc si ta syntaxe de Select Case est bonne si le contenu de ta colonne E correspond strictement à ton critère Left(Cells(j, 5), 14), cela doit fonctionner
Or déjà dans ton exemple, ca ne matche pas
(d'ou le Trim ajouté dans mon code)
Exemple du problème que j'évoque
VB:
Sub Tests_2()
Chaine = " CB MGP*Pumpkin"
MsgBox Len(Trim(Chaine)) = Len(Left(Chaine, 14))
ChaineOk = Replace(Chaine, Chr(32), "")
MsgBox ChaineOk = "CBMGP*Pumpkin"
End Sub