VBA - Concaténation deux cases en une

Bonjour,

Je travail actuellement sur un fichier sur lequel je dois faire un copier-coller d'une liste (suivant la valeur d'une autre case) vers un autre onglet.

J'ai actuellement un résultat qui me convient presque mais ce n'est pas parfait.

Deux problèmes :

- Je dois concaténer deux cases en une lors de cette copie. (colonne B + colonne C) Actuellement je fais que de la simple copie de la colonne B.

-Problème lorsque l'une des fonctions (OPE ou MME) de l'onglet "TraineeList" n'est pas présente dans ma liste de candidat. Il y a un affichage sur l'onglet "Recommendation" en B3 ou B19 alors que ça devrait rester vide.

J'ai aussi essayé de réaliser une boucle pour faire cette manip mais malheureusement sans succès.

Ci-joint mon fichier :

8macrotest.xlsm (26.33 Ko)

Merci de votre aide.

Amicalement.

Bonsoir saviola18, le forum,

Un essai.....

Sub Bouton2_Cliquer()
    Dim derligne As Long, dl1 As Long, dl2 As Long

    Application.ScreenUpdating = False

    Range("B3:B14").ClearContents
    Range("B19:B29").ClearContents

        dl1 = 3
        dl2 = 19

    With Sheets("TraineeList")
     derlig = .Range("B" & Rows.Count).End(xlUp).Row
      For i = 3 To derlig
       Select Case .Range("D" & i).Value
        Case Is = "OPE"
         Sheets("Recommendation").Range("B" & dl1) = .Range("B" & i) & " " & .Range("C" & i)
          dl1 = dl1 + 1
        Case Is = "MME"
         Sheets("Recommendation").Range("B" & dl2) = .Range("B" & i) & " " & .Range("C" & i)
          dl2 = dl2 + 1
        End Select
      Next i
    End With
End Sub
3macrotest-2.xlsm (24.50 Ko)

Cordialement,

Bonjour xorsankukai,

ça marche très bien merci.

Je clôture

Cordialement.

Bonjour je souhaiterai, SVP, une petite Update de ce sujet

Suite à quelque complication je me rends compte que la répartition des noms par ligne et moins pratique que pour une répartition en colonne.

Pouvons nous changer la répartition pour envoyé les noms à partir de "B3" jusqu'à "Xcolonne 3" Si OPE

Et à partir de "C21" jusqu'à "Xcolonne 21" si MME

Merci de votre aide.

Cordialement.

Saviola18

Bonjour saviola18, le forum,

A tester:

Sub Bouton1_Cliquer()
  Dim derligne As Long, dc1 As Long, dc2 As Long

    Application.ScreenUpdating = False

    Range("C4:N3").ClearContents
    Range("D21:N21").ClearContents

        dc1 = 3
        dc2 = 4

    With Sheets("TraineeList")
     derlig = .Range("B" & Rows.Count).End(xlUp).Row
      For i = 3 To derlig
       Select Case .Range("D" & i).Value
        Case Is = "OPE"
         Sheets("Recommandation").Cells(3, dc1) = .Range("B" & i) & " " & .Range("C" & i)
          dc1 = dc1 + 1
        Case Is = "MME"
         Sheets("Recommandation").Cells(21, dc2) = .Range("B" & i) & " " & .Range("C" & i)
          dc2 = dc2 + 1
        End Select
      Next i
    End With
End Sub
6macrotest-2.xlsm (24.68 Ko)

Cordialement,

Bonjour xorsankukai,

ça marche même si j'ai fait quelques erreurs dans mon explication.

voici mon code finale que j'ai réussi à modifier (juste décalage des cellule de départ)

 Sub Bouton1_Cliquer()
  Dim derligne As Long, dc1 As Long, dc2 As Long

    Application.ScreenUpdating = False

    Range("C2:U21").ClearContents
    Range("C21:U21").ClearContents

        dc1 = 3
        dc2 = 3

    With Sheets("TraineeList")
     derlig = .Range("B" & Rows.Count).End(xlUp).Row
      For i = 3 To derlig
       Select Case .Range("D" & i).Value
        Case Is = "OPE"
         Sheets("Recommandation").Cells(2, dc1) = .Range("B" & i) & " " & .Range("C" & i)
          dc1 = dc1 + 1
        Case Is = "MME"
         Sheets("Recommandation").Cells(21, dc2) = .Range("B" & i) & " " & .Range("C" & i)
          dc2 = dc2 + 1
        End Select
      Next i
    End With
End Sub

Mon problème est résolu, Merci.

Cordialement.

Rechercher des sujets similaires à "vba concatenation deux cases"