IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

numérotation automatique selon variable d'une cellule [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut numérotation automatique selon variable d'une cellule
    Bonjour,
    j'ai une feuille de saisie de données dans laquelle je veux numéroter ces données au fur et à mesure de la saisie au travers un USF ( la partie USF et saisie est réglée, voir sujet http://www.developpez.net/forums/d12...isie-combobox/)
    Maintenant, je cherche à ce qu'à chaque validation de la saisie d'une ligne (plage B à N), la cellule A de la ligne correspondante se numérote automatiquement selon un format particulier : xyz1, xyz2, etc. où xyz est l'abréviation d'une ville.
    Dans le fichier joint, j'ai une solution à base de formule mais je souhaite utiliser le vba puisque je m'y suis plongé !

    La solution actuelle par formule (c'est plus clair sur mon fichier joint):
    - à la première utilisation, l'usager entre le nom de sa ville en B1 et l'abréviation s'inscrit en A1 via la formule '=si'
    - la numérotation est pré-remplie en concaténant A1 et la colonne D qui contient la suite de chiffre pour la numérotation
    Inconvénient : la colonne A est forcément remplie sur les 1200 lignes de mon fichier projet (ainsi que la colonne D mais qui peut être masquée)

    J'ai bien recherché sur le forum mais je n'ai rien trouvé qui répondait à ma question. Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Bon, j'ai un début de piste très satisfaisant :
    Dans le code de l'objet feuil2 qui reçoit mes données j'ai ajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If IsNumeric(Range("A1200").End(xlUp).Value) Then
            UserForm7.Label14.Caption = Range("A1200").End(xlUp).Value + 1 'le label 14 est placé sur le USF qui sert de formulaire
        Else
            UserForm7.Label14.Caption = 1
        End If
            UserForm7.Show
    Puis, dans le code du bouton 'valider' de mon USF formulaire, j'ai ajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      With Range("A1200").End(xlUp)
            .Offset(2, 0).Value = Label14.Caption
    Donc j'ai bien une numérotation automatique opérationnelle mais qui ne m'inscrit qu'un chiffre.
    Il me manque maintenant le "truc" pour que la valeur de la cellule de numérotation intègre la valeur de la cellule A1 (abréviation de la ville) pour se transformer en xyz1, etc.
    Merci

  3. #3
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     With Range("A1200").End(xlUp)
            .Offset(2, 0).Value = Range("A1").Value & Label14.Caption

  4. #4
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Bonjour et merci.
    Oui cela fonctionne bien mais alors le "compteur" sur le USF n'incrémente pas +1 lorsque j'ai validé les saisies. Il reste sur 1 (il incrémente normalement avec la ligne de code initial)
    Voici le code complet du USF (c'est long mais c'est de la compil de différentes sources trouvées ça et là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    'bouton pour valider les données du USF
    Private Sub validation_Click()
    Dim NLig As Long
     
    With Sheets("Activités")
     
        With Range("A1200").End(xlUp)
            .Offset(1, 0).Value = Label14.Caption 'ma ligne de code pour le n° interne
            '.Offset(1, 0).Value = Range("A1").Value & Label14.Caption 'ta ligne de code
        End With
     
        If IsNumeric(Range("A1200").End(xlUp).Value) Then
            UserForm7.Label14.Caption = Range("A1200").End(xlUp).Value + 1
        Else
            UserForm7.Label14.Caption = 1
        End If
     
      NLig = .Range("B1202").End(xlUp).Row + 1
      'colonne de destination des données saisies dans le USF
                .Cells(NLig, 2).Value = ComboBox1
                .Cells(NLig, 4).Value = ComboBox2
                .Cells(NLig, 9).Value = ComboBox3
                .Cells(NLig, 11).Value = ComboBox4
                .Cells(NLig, 12).Value = ComboBox5
                .Cells(NLig, 3).Value = TextBox1
                .Cells(NLig, 5).Value = TextBox2
                .Cells(NLig, 6).Value = TextBox3
                .Cells(NLig, 7).Value = TextBox4
                .Cells(NLig, 8).Value = TextBox5
                .Cells(NLig, 10).Value = TextBox6
                .Cells(NLig, 12).Value = TextBox7
                .Cells(NLig, 13).Value = TextBox8
     
    End With
     
    'réinitialise le USF pour une nouvelle saisie
    Me.ComboBox1.Value = ""
    Me.ComboBox2.Value = ""
    Me.ComboBox3.Value = ""
    Me.ComboBox4.Value = ""
    Me.ComboBox5.Value = ""
    Me.TextBox1.Value = ""
    Me.TextBox2.Value = ""
    Me.TextBox3.Value = ""
    Me.TextBox4.Value = ""
    Me.TextBox5.Value = ""
    Me.TextBox6.Value = ""
    Me.TextBox7.Value = ""
    Me.TextBox8.Value = ""
     
    ComboBox1.SetFocus
    End Sub

  5. #5
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    Evidement,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm7.Label14.Caption = Range("A1200").End(xlUp).Value + 1
    ne peut plus fonctionner puisque la cellule ne contient plus un nombre. On ne peut pas avoir deux valeurs différentes dans la même cellule !

    Tu peux essayer comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        With Range("A1200").End(xlUp)
            Offset(1, 0).Value = Range("A1").Value & Label14.Caption 'ta ligne de code
        End With
     
        If Not IsEmpty(Range("A1200").End(xlUp).Value) Then
            UserForm7.Label14.Caption = Mid(Range("A1200").End(xlUp).Value, Len(Range("A1"))+1) + 1
        Else
            UserForm7.Label14.Caption = 1
        End If

  6. #6
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Testé mais à la validation il me retourne une erreur de compilation (sub ou fonction non définie) sur la ligne 3 avec Offset surligné en jaune
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Offset(1, 0).Value = Range("A1").Value & Label14.Caption 'ta ligne de code

  7. #7
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Re,
    Il manque juste le point devant...

  8. #8
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    IMPECCABLE ! Je te remercie pour ton coup de pouce car je cherche depuis ce matin sur la toile mais sans succès !
    Je ne peux pas dire "à charge de revanche" car j'en serai bien incapable

    maintenant, je m'attèle au USF pour modifier les saisies selon leur n° d'enregistrement...Du taf en perspective.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/09/2014, 17h20
  2. rendre une partie d'une phrase variable dans une cellule, est ce possible?
    Par voldo2142 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2008, 10h08
  3. Réponses: 1
    Dernier message: 04/03/2007, 00h40
  4. Numérotation automatique des résultats d'une requête
    Par Nicola dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/07/2006, 20h57
  5. Numérotation automatique selon les utilisateurs
    Par Safaritn dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 12/08/2005, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo