XL 2013 Vba

Cqgkcqs

XLDnaute Nouveau
Bonjour à tous,

Je viens à vous pour un problème de VBA. Je travaille actuellement sur ma première VBA mais je bloque à un moment.
Dans le fichier joint "Données", vous pouvez-voir une liste de personnes et mon but est de créer de manière automatique l'insertion d'une nouvelle personne.
J'ai donc créer une VBA pour insérer une nouvelle ligne à la suite, mais si je souhaite ajouter une seconde ligne, cela me remet automatiquement sur la première ligne, ce qui est logique.

Comment faire pour descendre d'une ligne à chaque fois que je relance ma VBA ?

Je vous ai joint le fichier "Données1" qui est le travail que j'ai effectué durant 3 longues heures... Ce qui risque d'en faire sourire plus d'un !

Merci d'avance,

Fabien.
 

Pièces jointes

  • Données - VBA.xlsx
    25.1 KB · Affichages: 51
  • Données1 - VBA.xlsm
    36.4 KB · Affichages: 57
  • Données1 - VBA.xlsm
    36.4 KB · Affichages: 55

Cqgkcqs

XLDnaute Nouveau
Re : Vba

Bonjour, dans un premier temps, le plus simple est de nous informer du résultat souhaité dans sa globalité et dans un second temps, on vous expliquera comment/quoi faire. Vous avez un userform ? A quoi sert-il ? Le bouton "ok" dessus à quoi sert-il ?

Résultat souhaité dans sa globalité : Insérer une ligne contenant des informations dans plusieurs colonnes à la suite de lignes existantes.
Mon UserForm sert à remplir les colonnes. J'ai créer un "Formulaire" qui indique quel champ remplir.
Le bouton OK du UserForm sert à, une fois la totalité des champs remplis, valider ce "Formulaire" et faire apparaître la nouvelle ligne.

Chaque ligne doit comporter un numéro dans la première colonne. Précédemment, j'avais créer un bouton afin de mettre ce numéro.
J'aimerais à présent inclure cette opération à l'autre.

Est-ce plus clair ?
 

Cqgkcqs

XLDnaute Nouveau
Re : Vba

Bonjour,

Merci JM27 ! C'est plutôt simple en relisant votre codage mais pour un novice comme moi, c'était une tâche plutôt complexe !
Dernière question, toi qui a ouvert mon fichier sera certainement plus apte à la comprendre.

J'ai une cellule "Type" incluant ces 3 possibilités (Apprenant, Intervenant, Administratif) et une cellule "Fonction". J'ai créer un champ dans mon UserForm pour y insérer la "Fonction". (Ex : Directeur). Or si le "Type" est Apprenant, je souhaite voir apparaitre dans la cellule "Fonction" : "-".
Je dois insérer une fonction If si je ne me trompe pas ? Or, je doute de l'endroit..

Merci d'avance.
 

Pièces jointes

  • Données2 - VBA.xlsm
    39.2 KB · Affichages: 42

JM27

XLDnaute Barbatruc
Re : Vba

Bonjour

Fonction à insérer dans l'événement associé à la comboType (lors de son changement de valeur)

comme cela
 

Pièces jointes

  • Données1 - JM27.xlsm
    43.5 KB · Affichages: 33
  • Données1 - JM27.xlsm
    43.5 KB · Affichages: 32
Dernière modification par un modérateur:

Cqgkcqs

XLDnaute Nouveau
Re : Vba

Rebonjour,

C'est exactement ça !
Par contre je dois avouer que je comptais prendre comme exemple cette action afin de la répéter sur les autres cellules, mais je suis complétement perdu.. Promis, ce sera ma dernière question !

Je souhaite renouveler l'opération sur cela :
Si "Type" = Intervenant ou Administratif ALORS "Diplomé" = "-"
Si "Type" = Intervenant ou Administratif ALORS "Groupe" = "-"
Si "Type" = Intervenant ou Administratif ALORS "Niveau" = " "
Si "Type" = Intervenant ou Administratif ALORS "Promo" = "IPI"
Si "Type" = Apprenant ALORS "Tel" = "-" SINON continuer les numéros à la suite
Et enfin
Si "Type" = Intervenant ou Administratif ALORS "Compte" = première lettre "Prénom" et "Nom" entier. Or, j'ai déjà une fonction SI pour le dernier "Type"..
 

JM27

XLDnaute Barbatruc
Re : Vba

Bonsoir
Les n° de tel ne sont pas numériques das ta base , on ne peut donc pas ajouter 1
sinon le reste est ok a tester

pour info j'ai supprimé les formules dans les nouvelles lignes et les ai intégré à la macro ( mélanger du VBA et des formules dans une base : j'aime pas :p)
 

Pièces jointes

  • Données1 - JM27.xlsm
    45.8 KB · Affichages: 24
  • Données1 - JM27.xlsm
    45.8 KB · Affichages: 20
Dernière modification par un modérateur:

Cqgkcqs

XLDnaute Nouveau
Re : Vba

Bonsoir,

Ok pour les numéros de tel, je corrigerai ça.
J'ai vu les formules supprimées, je me doute que le mélange VBA/Formule de base n'est pas conseillé ! Merci du conseil.

Les colonnes "Anglais" et "Niveau" fonctionnent ensemble, je pensais qu'avec le VBA qui inscrit " " suivant le "Type", la colonne "Niveau" allait s'ajuster.
Est-il possible de faire : Si "Type" = Intervenant ou Administratif ALORS "Anglais" = "-" ?

Et enfin, dans la colonne "Mot de passe", les cellules se suivent en s'ajoutant de 1 à chaque fois. Une formule de base est donc applicable. Or, si "Type" = Intervenant ou Administratif, alors la cellule "Mot de passe" doit être complétée manuellement, sans être numérique. Je me doute que c'est faisable en VBA directement, mais je n'ai réussi qu'en mélangeant Formule de base et VBA..
 

JM27

XLDnaute Barbatruc
Re : Vba

Bonsoir

A toi d'essayer de t’approprier ce programme
si il y a des choses que tu ne comprends pas : poses des questions.

A tester
 

Pièces jointes

  • Données1 - JM27.xlsm
    46.2 KB · Affichages: 24
  • Données1 - JM27.xlsm
    46.2 KB · Affichages: 26

Cqgkcqs

XLDnaute Nouveau
Re : Vba

Merci !
J'ai revu mon UserForm afin qu'il soit plus logique.

Pour la colonne "Messagerie", je ne vois pas la formule "Minuscule". :confused:
J'aimerais la colonne "Nom" en Majuscule et la colonne "Prénom" avec la première lettre en Majuscule puis le reste en Minuscule.

Pour la colonne "Messagerie" je fonctionne actuellement avec une formule de base. Prénom + Nom + @........ le tout en Minuscule. Le problème c'est que je suis obligé d'étendre la formule et la partie à droite de @ est toujours visible.
Appliquer cette formule en VBA est certainement plus judicieux que de cacher la fin de la cellule avec une formule de base ?
 

Cqgkcqs

XLDnaute Nouveau
Re : Vba

Bonsoir,

Ça a l'air de fonctionner. Merci.
Concernant les numéros de tel, n'étant pas numériques, je souhaitais insérer un champ supplémentaire "Tel" dans le UserForm afin de l'écrire manuellement.
Est-ce de cette façon ? Cells(Rows.Count, 12).End(xlUp).Offset(1, 0) = TextBox3
Cela risque de compliquer les choses puisqu'un "-" apparaît déjà suivant le "Type".

Et de quelle façon code t-on le fait de prolonger le tableau à chaque nouvelle ligne ?
 

JM27

XLDnaute Barbatruc
Re : Vba

Bonsoir
Tu sélectionnes ta zone de données et
Insertion/tableau

et celui ci sera dynamique à chaque ligne rajoutée
 

Pièces jointes

  • Données1 - JM27.xlsm
    48.4 KB · Affichages: 22
  • Données1 - JM27.xlsm
    48.4 KB · Affichages: 22

Discussions similaires

Réponses
9
Affichages
473
Réponses
10
Affichages
477

Statistiques des forums

Discussions
312 572
Messages
2 089 819
Membres
104 284
dernier inscrit
Yohan90