Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Ajout texte automatique dans cellule après saisie

jp50130

XLDnaute Nouveau
Bonjour,
Comment faire apparaître automatiquement "Monsieur" devant le nom que je saisis dans une cellule de la colonne A (et pas dans une cellule vide) ?
Merci de votre attention.
Jean-Pierre
 

job75

XLDnaute Barbatruc
Bonjoir jp50130,

A placer dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target(1) <> "" And Left(Target(1), 8) <> "Monsieur" Then Target(1) = "Monsieur " & Target(1)
End Sub
Une seule cellule est traitée même quand on fait une entrée multiple.

A+
 

job75

XLDnaute Barbatruc
Re,

Comme je l'ai dit la macro précédente traite une seule entrée.

Si l'on veut traiter simultanément plusieurs entrées on exécutera celle-ci :
Code:
Sub EntrerMonsieur()
Dim t, P As Range, tablo, i&, x$
t = Timer
With ActiveSheet 'adapter éventuellement
    Set P = Intersect(.Range("A2:A" & .Rows.Count), .UsedRange)
    If P Is Nothing Then Exit Sub
    If .FilterMode Then .ShowAllData
End With
tablo = P 'matrice, plus rapide
If Not IsArray(tablo) Then tablo = P.Resize(, 2) 'au moins 2 éléments
For i = 1 To UBound(tablo)
    x = tablo(i, 1)
    If x <> "" And Left(x, 8) <> "Monsieur" Then tablo(i, 1) = "Monsieur " & x
Next
P = tablo 'restitution
MsgBox "Durée " & Format(Timer - t, "0.00 \s")
End Sub
J'ai testé en entrant le même texte (Ctrl+Entrée) dans les 1048576 cellules de la colonne A => 3,9 secondes chez moi.

A+
 

jp50130

XLDnaute Nouveau
J'ai essayé sur un nouveau fichier en copiant/collant le code et en essayant la saisie multiple sur toute la colonne A, ça ne fonctionne pas.
Autant pour moi j'ai exécuté la sub et là ça marche 0.26 s
 

Discussions similaires

Réponses
2
Affichages
346
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…