XL 2013 Automatisation de la Saisie et de l'Affichage des Textes dans une plage

chaelie2015

XLDnaute Accro
Bonsoir Forum
Dans la feuille 'Nature Ensemble', j'ai une cellule D3 pour la saisie des textes et une image nommée 'Valider'. Je souhaite qu'à chaque fois que je termine la saisie dans la cellule D3 et que je valide en cliquant sur l'image 'Valider', le texte de cette cellule soit affiché dans la première ligne vide de la plage de cellules 'D10:D110'nommée 'Nature Ensemble'. Ensuite, la cellule D3 doit être réinitialisée pour une nouvelle saisie.
Merci
 

Pièces jointes

  • Charlie créer une liste.xlsx
    42 KB · Affichages: 4

piga25

XLDnaute Barbatruc
Bonjour,
Affecter cette macro à votre bouton valider
VB:
Sub CopierTexte()

    Dim SourceCell As Range
    Dim TargetCell As Range

    ' Définir la cellule source
    Set SourceCell = Range("D3")

    ' Trouver la première cellule vide après D9 dans la colonne D
    Set TargetCell = Range("D10")
    Do While Not IsEmpty(TargetCell)
        Set TargetCell = TargetCell.Offset(1, 0)
    Loop

    ' Copier le texte de D3 dans la cellule cible trouvée
    TargetCell.Value = SourceCell.Value
    
    ' Efface les données de D3
    Range("D3").ClearContents
End Sub
 

chaelie2015

XLDnaute Accro
Re
VB:
Sub ValiderEtCopier()
Dim Derlig&
Derlig = Range("D" & Rows.Count).End(xlUp).Row + 1
If Derlig <= 10 Then Derlig = 10
Range("D" & Derlig) = Range("D3").Value
Range("D3").Value = ""
End Sub

Sub Effacer()
Range("D3").Value = ""
End Sub
Je souhaite ajouter à ce code (de Phil69970)ce qui suit : si le texte saisi dans la cellule D3 existe déjà dans la plage, ne pas l'ajouter à la plage et afficher un message dans la cellule D5 indiquant que ce texte existe déjà.
A+
 

job75

XLDnaute Barbatruc
Bonsoir à tous,
VB:
Sub Valider()
With Range("D10:D" & Rows.Count)
    If Application.CountIf(.Cells, [D3]) Then [D5] = "Ce texte existe déjà": Exit Sub
    [D5] = ""
    If .Cells(1) = "" Then
        .Cells(1) = [D3]
        .Cells(1).Name = "Cible"
    Else
        With .Find("", , xlValues)
            .Value = [D3]
            .Name = "Cible"
        End With
    End If
    [D3] = ""
End With
End Sub

Sub Annuler()
On Error Resume Next
With Range("Cible")
    [D3] = .Value
    .Value = ""
End With
End Sub
Le bouton "Annuler" doit annuler l'action du bouton "Valider" non ?

A+
 

Pièces jointes

  • Charlie créer une liste.xlsm
    47.8 KB · Affichages: 3

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 922
Messages
2 093 644
Membres
105 775
dernier inscrit
assen