Macro, répéter une opération x fois

Résolu
Philou73CH -  
 Philou73CH -
Bonjour Bonsoir,

J'unifie 2 cellules dans une avec la macro suivante :

Sheets("TT").[A2] = Sheets("TT").[B2] & " " & Sheets("TT").[C2]

Ce qui me déplait, c'est que c'est que j'ai un nombre variable et aléatoire de ligne dans lesquelles cette formule doit être utiliser.

Je m'explique : Je pars d'un tableau comprenant tout les noms et prénoms d'une base de donnée, puis je sélectionne à l'aide d'une macro, je garde que les noms qui commence par la lettre de l'alphabet que j'ai choisi. ( Par exemple tous ceux commencant par A).

Une fois cela fait, j'ai besoin d'unifier le nom et prénom dans la collone A.
Et c'est ici que je coince. La formule ci-dessus est trop précise. Elle m'oblige à la répéter chaque fois pour chaque ligne. Et comme cette donnée est variable ......
Je cherche donc à faire une boucle qui dit que tant que B n'est pas vide, il faut unifier, et une fois que B est vide, il faut passer à la suite du programme.
Et là, je sèche, je coule, tel une m..... je m'éclate au sol :-(( Pouvez-vous m'aider ??

Merci d'avance à nouveau de votre aide qui m'a déjà été très très précieuse.

Amicalement

2 réponses

Normad Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   40
 
    Dim T As String, I As Integer
    T = Sheets("TT").Range("B2").Value & " " & Sheets("TT").Range("C2").Value
    While T <> ""
        Sheets("TT").Range("A" & I).Value = T
        I = I + 1
        T = Sheets("TT").Range("B" & I).Value & " " & Sheets("TT").Range("C" & I).Value
    Wend
0
Philou73CH
 
Bonjour / Bonsoir Normad,

A nouveau je vous remercie d'avoir pris le temps de lire mon problème et de m'avoir proposé une solution. Hélas, cela bloc à la ligne : Sheets("TT").Range("A" & I). Value =T

J'ai fait copier collé dans ma macro. Pour éviter de faute de frappe ou d'inattention de ma part.
Peut-être cela vous indiquera quelques choses. Moi je ne peux résoudre le problème.
D'avance merci à vous.
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Slt,

Et ça, ça fonctionne ou pas ?

En fait le code de Normad ne peut pas fonctionner tel quel ... la variable "I" n'est pas initialisée en début de boucle While et donc Range("A" & I) plante parce que la cellule A0 n'existe pas ... ensuite, il ne fait que concaténer toutes les lignes et ce même s'il n'y a rien dans les cellules ....... et sans tenir compte de l'initiale du nom !!!
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

A adapter au besoin et faire un retour pour modif éventuelles

Sub test()
Dim i As Long
Dim FirstChar As String
Dim rep As String

    rep = InputBox("Entrer une lettre")
    rep = UCase(rep)

    i = 2
With Sheets("TT")
    While .Range("B" & i).Value <> ""
        FirstChar = Mid(.Range("B" & i).Value, 1, 1)
        If rep = FirstChar Then
            .Range("A" & i).Value = .Range("B" & i).Value & " " & .Range("C" & i).Value
        End If
    i = i + 1
    Wend
End With

End Sub

0
Philou73CH
 
Merci à toi, Polux31,

J'ai pu résoudre mon problème en utilisant ta macro.
Désolé cela m'a pris du temps, car je l'ai mise à la mauvaise place et j'ai fait une m..... du diable.
Maintenant c'est tout bon.
Mille merci à toi. Tu es super classe.
0