Saisie Numéro chèque

  • Initiateur de la discussion Initiateur de la discussion zeltron24
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zeltron24

XLDnaute Impliqué
Bonsoir le Forum,

Je fais appel à vos connaissances afin de savoir si il n'y aurait pas une formule pour la saisie automatique du numéro de chèque.
Ci joint un petit fichier explicatif.
En clair, si je sélectionne Ch. dans la colonne B je souhaite avoir le numéro du chèque suivant.
Merci d'avance pour votre aide.
Cordialement
zeltron24
 

Pièces jointes

Re : Saisie Numéro chèque

Salut zeltron24 et le forum
Par macro
Clic-droit sur nom de l'onglet>>visualiser le code et tu colles ça :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim X As Long
If Target.Address(0, 0) Like "B*" And Target.Cells.Count = 1 and Target = "Ch." Then
    For X = Target.Row - 1 To 1 Step -1
        If Range("B" & X) = "Ch." Then
            Target.Offset(0, 1) = Range("C" & X) + 1
            Exit For
        End If
    Next X
End If
End Sub
Ça prendra en compte le dernier numéro "saisit" et ça lui ajoutera 1
A+

Edit : correction de la macro pour tenir compte de "Ch."
 
Dernière édition:
Re : Saisie Numéro chèque

Merci Tibo et Gorfael

La solution de Godfael est proche de mon souci mais dés que je clique sur la cellule en B le numéro s'inscrit avant que j'ai sélectionné Ch.
Tu me diras qu'il suffit de l'effacer lors du passage en C Mais.......
Quant à Tibo sa solution est plus simple et plus facile à comprendre pour moi.
En tout les cas merci à vous deux pour votre aide.
J'ai au moins deux possibilités au choix
Bonne soirée à vous tous.
 
Re : Saisie Numéro chèque

Bonsoir le Forum,
Je me permets de revenir sur ce fil car après remplissage de mes feuilles, je trouve "Ennuyeux" le fait de devoir à chaque saisie en C autre que "Ch." devoir aller sur D afin d'effacer le numéro du chèque inscrit alors qu'il sagit d'une CB ou d'un Virement.
Aussi voici le code de Gorfael que je souhaite modifier afin que lorsque je clique sur la cellule C le numéro du chèque n'apparait pas directement mais uniquement après la sélection de Ch.
Code:
' Saisie automatique du numéro de chèque
Dim X As Long
If Target.Address(0, 0) Like "C*" And Target.Cells.Count = 1 Then
    For X = Target.Row - 1 To 1 Step -1
        If Range("C" & X) = "Ch." Then
            Target.Offset(0, 1) = Range("D" & X) + 1
            Exit For
        End If
    Next X
End If

Merci d'avance pour votre aide. j'ai bien essayé differente solution mais sans succés.
zeltron24
 

Pièces jointes

Re : Saisie Numéro chèque

Bonjour zeltron24, Tibo, Gorfael,

Au vu de votre fichier, essayez donc cette macro :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range
Set Target = Intersect(Target, [C8:C65536])
If Target Is Nothing Then Exit Sub
For Each Target In Target
  If Target = "" Then
    Target.Offset(, 1) = "" 'effacement
  ElseIf Target = "Ch." Then
    Application.ScreenUpdating = False
    Set plage = Range("C7:C" & Target.Row - 1)
    plage.AutoFilter 1, "Ch." 'filtre automatique
    Set plage = plage.SpecialCells(xlCellTypeVisible).Offset(, 1)
    Me.AutoFilterMode = False
    Target.Offset(, 1) = Application.Max(plage) + 1
  End If
Next
End Sub
Noter que si l'on efface les opérations en colonne C, les cellules en colonne D sont effacées.

Edit : je joins quand même le fichier avec des listes de validation correctes en colonne C.

A+
 

Pièces jointes

Dernière édition:
Re : Saisie Numéro chèque

Re,

Evidemment le filtre n'est pas nécessaire si en colonne D il n'y a que des numéros de chèques (pas de nombre pour les autres opérations) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range
Set Target = Intersect(Target, [C8:C65536])
If Target Is Nothing Then Exit Sub
For Each Target In Target
  If Target = "" Then
    Target.Offset(, 1) = "" 'effacement
  ElseIf Target = "Ch." Then
    Set plage = Range("D8:D" & Target.Row - 1)
    Target.Offset(, 1) = Application.Max(plage) + 1
  End If
Next
End Sub
Edit : fichier (2)

A+
 

Pièces jointes

Dernière édition:
Re : Saisie Numéro chèque

Bonjour à tous,

Ayant moi-même un fichier Excel pour mes comptes je suis intéressé par vos solutions.
Pensez-vous qu'il soit possible d'effectuer l'action dans la même colonne:
-taper Ch
-faire "Espace" et le numéro s'incrémente à côté sans changer de colonne.

Merci.
A+
 
Re : Saisie Numéro chèque

Bonjour degap05,

Je reviens vers vous après cette dernière solution.

Si l'on veut incrémenter (séparément) chaque opération :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range
Set Target = Intersect(Target, [C8:C65536])
If Target Is Nothing Then Exit Sub
For Each Target In Target
  If Target = "" Then
    Target.Offset(, 1) = "" 'effacement
  Else
    Application.ScreenUpdating = False
    Set plage = Range("C7:C" & Target.Row - 1)
    plage.AutoFilter 1, Target 'filtre automatique
    Set plage = plage.SpecialCells(xlCellTypeVisible).Offset(, 1)
    Me.AutoFilterMode = False
    Target.Offset(, 1) = Application.Max(plage) + 1
  End If
Next
End Sub
Fichier (3).

A+
 

Pièces jointes

Re : Saisie Numéro chèque

Re degap05,

Voici donc une solution :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, maxi&
Set Target = Intersect(Target, [C8:C65536])
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error Resume Next 'sécurité
For Each Target In Target
  If Target <> "" And InStr("ChCBVir", Target) Then
    Set plage = Range("C7:C" & Target.Row - 1)
    maxi = 0
    For Each plage In plage
      If plage.Text Like Target & "*" Then _
        maxi = Application.Max(plage, maxi)
    Next
    Target.NumberFormat = """" & Target & " ""0"
    Target = maxi + 1
  End If
Next
Application.EnableEvents = True
End Sub
Bien noter que :

- en colonne C ce sont des nombres qui sont entrés automatiquement

- les cellules sont mises au format personnalisé "Ch "0 ou "CB "0 ou "Vir "0

J'ai essayé sans succès d'utiliser le filtre automatique pour obtenir le maximum de la plage.

A+
 

Pièces jointes

Re : Saisie Numéro chèque

Re,

Bon, on peut (à juste titre) préférer du texte en colonne C :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, maxi&, n&
Set Target = Intersect(Target, [C8:C65536])
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error Resume Next 'sécurité
For Each Target In Target
  If Target <> "" And InStr("ChCBVir", Target) Then
    Set plage = Range("C7:C" & Target.Row - 1)
    maxi = 0
    For Each plage In plage
      If plage Like Target & "*" Then
        n = Replace(Replace(Replace(plage, "Ch", ""), "CB", ""), "Vir", "")
        maxi = Application.Max(n, maxi)
      End If
    Next
    Target = Target & " " & maxi + 1
  End If
Next
Application.EnableEvents = True
End Sub
Fichier (2).

A+
 

Pièces jointes

Re : Saisie Numéro chèque

Salut degap05 et le forum
-taper Ch
-faire "Espace" et le numéro s'incrémente à côté sans changer de colonne.
Non, c'est impossible : c'est l'action de sortir du mode édition de la macro qui déclenche la macro Change. Tant qu'on reste en mande édition, aucune macro ne se lance.

Cependant, on peut imaginer le scénario suivant :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim X As Long
If Target.column = 2 And Target.Cells.Count = 1 and Target = "Ch " Then
    For X = Target.Row - 1 To 1 Step -1
        If Range("B" & X) like "Ch *" Then
            Target = target & clng(right(Range("B" & X),len(Range("B" & X))-3)) + 1
            Exit For
        End If
    Next X
End If
End Sub
À la validation de la cellule
si la cellule est égale à "Ch " on recherche la dernière cellule commençant pareil, dont on prend la partie de droite en enlevant les 3 premières lettres, on la convertit en entier et on lui ajoute 1
A+
 
Re : Saisie Numéro chèque

Bonjour Job75 et Gorfael,

Merci d'avoir consacré du temps à résoudre ma demande.
Ta solution, Job75, fonctionne.
J'aurais aimé tester la tienne, Gorfael, mais je n'obtiens pas le résultat prévu....
Je joins le fichier.
Merci en tout cas.
A+
 

Pièces jointes

Re : Saisie Numéro chèque

Bonsoir le Forum,

Me voici grâce à vous avec une multitude d'idéés nouvelles que je vais mettre en pratique dès maintenant.
Degap05 me donne une nouvelle piste.
Il est tout à fait juste (ce que Gorfael a remarqué) que je me suis trompé en recopiant la formule. Il faut bien prendre en compte les cellules C (devant contenir soit Ch. ou Virm ou Prl) et D ou s'inscrit le numéro du chèque si en C on a sélectionné Ch.
Un grand merci à vous tous
Du superbe travail Bravo
cordialement zeltron24
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
198
Réponses
9
Affichages
277
Retour