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 Sub

3. Remplacez votre code Effacerform par celui ci-dessous

Sub Effaceform()
Feuil10.Range("A10:H10").ClearContents
End Sub

Lorsque 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 Sub

Par 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 interprete

Edit :

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 interprete

Numinterp 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 interprete

Absolument 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
Rechercher des sujets similaires à "macro incompatible"