Macro incompatible avec PC
Ah si je comprends bien la colonne C dans la feuille Interprete sert à donner un numéro
Si oui, je pense que vous pouvez vous passer de cette feuille et aller directement mettre les données dans la feuille répertoire interprete
Par contre pourquoi vos numéros d'interprètes n'ont-ils pas commencé à 1 dans la feuille répertoire interprètes. Ils commencent à 17
Edit : A quoi vous sert la liste déroulante "code interprètes" dans la feuille Formulaire
D'accord, merci.
J'ai supprimé la feuille "interprète" et copié ce qu'il y avait dedans dans la feuille "répertoire interprète".
Les étapes de la Macro sont effectivement plus simples, merci !
1/ Oter protection feuille "repertoire interprete"
2/ Ajouter une ligne à "ListeInterprete" et à "REPERTOIRE"
3/ Copier le formulaire dans REPERTOIRE
4/ Copier valeurs "CODEinterprete" en I2 et K2
5/ EFFACER cellule M2 et supprimer les vides de la colonne du tableau "TabNUMERO"
6/ Trier la colonne "REFinterprete" dans l'ordre croissant
7/ Protéger la feuille "repertoire interprete"
8/ Retour au formulaire avec ajout d'un message pour informer l'utilisateur de la réussite de l'action : en vert, gras "interprète enregistré"
Edit : j'ai pu charger le fichier
Je n'ai pas besoin du fichier
Comme précisé avant, j'ai besoin de comprendre comment pourquoi le code interprète est à 34
De ce que j'ai compris, le code est attribué en fonction du nombre d'interprètes. Dans la feuille repertoire interprètes, actuellement il y a 13 noms.
Pourquoi ne commencez-vous pas 1 au lieu de 17 ?
L'idée que je suis est d'attribuer le code en fonction du nombre d'interprètes enregistrés. C'est la raison de ma question.
Exemple dans votre fichier, le dernier numero est 29. Donc le prochain interprète aurait le numéro 30.
ah ! d'accord, oui ça n'a aucune importance.
34 correspond au nombre de fois où j'ai cliqué sur le bouton pour faire des tests. Ensuite j'ai effacé les les coordonnées ajoutées inutilement sans modifier les codes interprètes
EDIT: La liste déroulante va me permettre de copier le code interprète depuis le formulaire jusque dans la feuille interpretelangues (voir ce qui est écrit en rouge dans le formulaire).
Je n'ai pas fait de macro pour les langues parce que ça me dépassait totalement alors on sera obliger de copier coller les codes interprètes dans les langues correspondantes. un interprète peut parler plusieurs langues...
34 correspond au nombre de fois où j'ai cliqué sur le bouton pour faire des tests. Ensuite j'ai effacé les les coordonnées ajoutées inutilement sans modifier les codes interprètes
Ok. je vais faire le code pour que le num intérprètes correspondent au nombre de ligne. Chaque fois que vous rajouterez un nom, le numéro sera incrémenté.
Les colonnes Liste interprete K, M, O et P ne devraient plus être nécessaires
Comme pour le cas précédant, allez dans le gestionnaire de noms et modifiez déjà le nom Tab2530 --> TabINTERPRETES
Si vous choisissez un autre nom dites moi
EDIT: La liste déroulante va me permettre de copier le code interprète depuis le formulaire jusque dans la feuille interpretelangues (voir ce qui est écrit en rouge dans le formulaire).
Je ne vois pas de feuille Interpretelangues, je peux la reprendre depuis l'autre fichier et la replacer dans celui ci
La liste déroulante peut aussi venir de la colonne I de la feuille Repertoire non ?
C'est la feuille languesinterpretes. Dans cette feuille il y a un grand nombre de colonnes qui correspondent à des langues. Dans ces colonnes, on colle le code interprète. Ça m'a semblé trop compliqué à faire en macro parce qu'il faut savoir que les administrateurs sont susceptibles d'ajouter de nouvelles colonnes dans cette feuille si des besoins dans de nouvelles langues non listées dans le classeur apparaissent.
J'ai besoin de ces colonnes de langue pour mon planning. Lorsque je recherche une langue dans le planning, la liste des interprètes qui apparaît correspond à la liste de la langue correspondante située en feuille languesinterpretes
Vous faites le code par rapport au nouveau fichier que je vous ai envoyé ou par rapport au tout premier SVP ?
Vous faites le code par rapport au nouveau fichier que je vous ai envoyé ou par rapport au tout premier SVP ?
Non par rapport au dernier fichier que vous avez posté
Pour la feuille langues, oui j'ai vu mais elle n'est pas dans votre dernier fichier d'où ma question dans mon post précédent. Pour le code, on peut peut être y penser mais plus tard.
1. Changez déjà le nom Tab2530 comme précisé dans mon post précédent
2. Ensuite, coller le code ci-dessous dans le module (en dessous de l'autre macro par exemple)
Sub EnregistrerInterprete()
Dim lig As Integer, Numinterp As Integer
Dim col As Byte
With Feuil4.ListObjects("TabINTERPRETES") 'feuille repertoire interpretes
Numinterp = .ListRows.Count + 1 'numero interprete
If .ListRows.Count = 0 Then
.ListRows.Add: lig = 1
Else: .ListRows.Add: lig = .ListRows.Count 'insérer à la dernière ligne
'Else: .ListRows.Add Position:=1: lig = 1 'insérer a la 1igne 1
End If
With .DataBodyRange
For col = 1 To 8
.Item(lig, col) = Feuil10.Cells(10, col).Value 'tel
Next col
.Item(lig, 9) = Feuil10.Cells(10, 1).Value & " " & Feuil10.Cells(10, 2).Value & " " & Numinterp 'ref interprete
End With
Call Effaceform 'effacer formulaire
End With
End Sub3. Remplacez votre code Effacerform par celui ci-dessous
Sub Effaceform()
Feuil10.Range("A10:H10").ClearContents
End SubLorsque vous allez ajouter un nouveau nom, le code enregistrerInterprete fera
- ajout des données en feuille repertoire
- créera une nouvelle ref interprete en colonne I
- Effacera les données dans la feuille formulaire
4. Reste la liste déroulante en A8 de la feuille Formulaire. Je vous ai posé la question de savoir si elle peut venir de la colonne I de la feuille repertoire
Bonsoir,
Oui, vous pouvez remettre la feuille du premier fichier, je l'avais supprimée car elle contenait des données perso'
La colonne I peut me servir de listeinterprète. Effectivement ça raccourcirait le chemin.
Mais avec votre code pour enregistrer le formulaire, il n'y a plus besoin de bouton pour tout effacer. Ce qui n'est pas plus mal car ça indique à l'utilisateur que qqc s'est effectivement déroulé et il n'est plus besoin d'afficher un message de validation. merci
Edit : les deux derniers codes envoyés fonctionnent parfaitement bien ! Y avait encore une erreur de mon côté dans l'étiquetage des noms mais ça y est, j'ai bien pigé le truc
1. La colonne I peut me servir de listeinterprète. Effectivement ça raccourcirait le chemin.
Ok. Alors faites ceci :
- Sélectionnez la feuille "repetoire interprete"
- Allez dans le menu excel --> formules --> gestionnaire de noms
- Sélectionnez le nom "ListeInterpretes"
- dans la rubrique "fait référence à" supprimer la formule que vous avez puis sélectionnez les cellules de I2 à I14 (I14 étant la fin du tableau de votre fichier posté ici). Après sélection des cellules sur la feuille vous devriez avoir ceci --> =TabINTERPRETES[REF Interpretes]
- Cliquez sur Ok
Du coup, je pense que vous pouvez supprimer les colonnes K à P dans la feuille repertoire interprete
2. Mais avec votre code pour enregistrer le formulaire, il n'y a plus besoin de bouton pour tout effacer.
Si, cela peut rester utile. Par exemple si avez commencé à introduire des données et que vous voulez recommencer. Cela ira plus vite que de sélectionner les données de la ligne pour effacer tout. A vous de voir.
En principe cela devrait fonctionner sur MAC et PC
3. Remarque concernant votre fichier et les langues : je pense que vous auriez pu procéder autrement car si je comprends vous copier la cellule A18 de la feuille formulaire puis collez la donnée dans la feuille langues.
Vous auriez pu par exemple utiliser la ligne 12 dans la feuille formulaire et y placer des listes déroulantes de choix des langues (exemple de A12 à E12 pour 5 langues) . Ensuite à l'enregistrement, le code pourait balancer les ref interprete dans la feuille Langues Interpretres.
Bonjour,
Merci pour votre réponse, je vous attendais comme le Messi :)
Alors, ça fonctionne plutôt pas mal ce code mais je crois qu'on s'est embrouillés au niveau des versions.
Le code interprète qui apparaît à la dernière ligne du tableau me donne le numéro de téléphone (colonne A) + le nom (colonne B, tout en minuscule) + le numéro de série qui correspond au nombre d'interprètes.
J'aurais voulu NOM (MAJUSCULE Colonne B) + " "+ Prénom (NOMPROPRE colonne C) + " "+ Numéro de série
Désolée si j'ai fait une erreur
Finalement j'ai réussi à comprendre où et comment modifier les colonnes pour que les informations voulues apparaissent.
Sub EnregistrerInterprete()
Dim lig As Integer, Numinterp As Integer
Dim col As Byte
With Feuil4.ListObjects("TabINTERPRETES") 'feuille repertoire interpretes
Numinterp = .ListRows.Count + 1 'numero interprete
If .ListRows.Count = 0 Then
.ListRows.Add: lig = 1
Else: .ListRows.Add: lig = .ListRows.Count 'insérer à la dernière ligne
'Else: .ListRows.Add Position:=1: lig = 1 'insérer a la 1igne 1
End If
With .DataBodyRange
For col = 1 To 8
.Item(lig, col) = Feuil10.Cells(10, col).Value 'tel
Next col
.Item(lig, 9) = Feuil10.Cells(10, 2).Value & " " & Feuil10.Cells(10, 3).Value & " " & Numinterp 'ref interprete
End With
Call Effaceform 'effacer formulaire
End With
End SubPar contre, je ne sais pas comment intégrer les formules =MAJUSCULE et =NOMPROPRE pour le prénom
EDIT : Et aussi, je me pose une question : dans le code je vois partout "Numinterp", ça correspond au numéro de l'interprète mais je ne comprends pas si ça renvoie à une plage de cellule ou à autre chose ? SVP, vous pourriez m'expliquer ce que vous avez fait comme ça je vous embêterai moins la prochaine fois
Merci
Le code interprète qui apparaît à la dernière ligne du tableau me donne le numéro de téléphone (colonne A) + le nom (colonne B, tout en minuscule) + le numéro de série qui correspond au nombre d'interprètes.
J'aurais voulu NOM (MAJUSCULE Colonne B) + " "+ Prénom (NOMPROPRE colonne C) + " "+ Numéro de série
Oui effectivement c'est juste une erreur de colonne. Il vous suffit de modifier cette ligne dans le code
.Item(lig, 9) = UCase(Feuil10.Cells(10, 2).Value) & " " & Feuil10.Cells(10, 3).Value & " " & Numinterp 'ref interpreteEdit :
dans le code je vois partout "Numinterp", ça correspond au numéro de l'interprète mais je ne comprends pas si ça renvoie à une plage de cellule ou à autre chose ?
regardez au début du code --> à cette ligne
Numinterp = .ListRows.Count + 1 'numero interpreteNuminterp prend la valeur du nombre de lignes de votre tableau en y ajoutant 1. L'on utilise cette valeur pour la ref interprete
Donc si, votre tableau à 10 lignes, Numinterp prendra la valeur 11 (nbre de lignes 10 + 1). Plus bas le code ajoutera 11 au nom et prenom.
Item(lig, 9) = UCase(Feuil10.Cells(10, 2).Value) & " " & Application.Proper(Feuil10.Cells(10, 3).Value) & " " & Numinterp 'ref interpreteAbsolument fantastique ! Le nom propre ne s'affichait pas car il manquait la fonction proper mais j'ai réussi ! Merci de m'avoir accompagnée dans la finalisation de ce fichier ! Ça m'a permis de comprendre davantage le fonctionnement des macros même si je suis encore loin d'en créer une toute seule. Je vais réfléchir avant de me lancer dans l'enregistrement des langues. Pour le moment ce n'est pas tellement gênant.
Dans le code je vois partout "Numinterp", ça correspond au numéro de l'interprète mais je ne comprends pas si ça renvoie à une formule que vous auriez rentrée ? Merci
Dans le code je vois partout "Numinterp", ça correspond au numéro de l'interprète mais je ne comprends pas si ça renvoie à une formule que vous auriez rentrée ?
Je vous ai répondu en éditant mon post précédent.
Non il n'y a pas de formule c'est juste le code qui grâce à l'instruction COUNT renvoie le nombre de lignes existantes dans la tableau.
D'où il est important de ne jamais avoir de lignes sans données dans un tableau au format structuré.
Edit :
- pensez à épurer votre fichier dans le gestionnaire de noms. Il y a des noms qui ne servent plus. C'est une des raisons pour laquelle je vous parlais des liste déroulantes en lignes 12 pour les langues. Là tous les noms ne serviraient plus
- Supprimez les modules 1 à 4 dans VBA. Il n'y a rien dedans
Merci j'ai épuré mon classeur comme vous me l'avez conseillé et j'ai refais toutes mes plages de langue.
Ensuite, j'ai regardé de plus près ce que vous me proposiez pour l'enregistrement des langues.
Remarque concernant votre fichier et les langues : je pense que vous auriez pu procéder autrement car si je comprends vous copier la cellule A18 de la feuille formulaire puis collez la donnée dans la feuille langues.
Vous auriez pu par exemple utiliser la ligne 12 dans la feuille formulaire et y placer des listes déroulantes de choix des langues (exemple de A12 à E12 pour 5 langues) . Ensuite à l'enregistrement, le code pourait balancer les ref interprete dans la feuille Langues Interpretres.
Ça me tente, je suis capable de faire les menus déroulants mais pour ce qui est du code, j'ai besoin de votre aide. Si vous pouviez me faire un pas à pas ?
Par ailleurs, j'ai rajouté une ligne au planning pour protéger la feuille à la fin. Est-ce que c'est correct ? J'ai noté tout à l'heure que vous conseiller d'éviter d'entrer trop de "sélects". La ligne que j'ai ajoutée en contient un. Est-ce un problème ? Si oui, comment le supprimer proprement ?
Merci encore
Sub EnregistrerPlanning()
' Macro7 Macro
Dim col As Byte
Feuil14.Unprotect 'feuille Issin
With Feuil14.ListObjects("TabISSIN") 'feuille Issin
If .ListRows.Count = 0 Then
.ListRows.Add: lig = 1
'Else: .ListRows.Add: lig = .ListRows.Count 'insérer à la dernière ligne
Else: .ListRows.Add Position:=1: lig = 1 'insérer a la 1igne 1
End If
For col = 1 To 10
.DataBodyRange.Item(lig, col) = Feuil12.Cells(19, col)
Next col
End With
With Feuil12.ListObjects("TabPLANNING")
.ListRows(19 - .HeaderRowRange.Row).Range.Delete
End With
Sheets("ISSIN").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("PLANNING").Select
End Sub