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

Résolu/Fermé
-
 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

Messages postés
112
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
10 juin 2015
34
    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
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.
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 190
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 !!!
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 190
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

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.