Correspondance numéros et initiales

SP03

XLDnaute Nouveau
Bonjour à toutes et à tous,

Loin d'être un Expert d'Excel, je me permets de me tourner vers vous afin de trouver de quoi solutionner mon problème de classeur Excel. J'espère me faire comprendre le plus clairement possible.
Alors, j'ai un fichier Excel contenant plusieurs colonnes et qui va être utilisé par cinq ou six personnes différentes. Il s'agit des raisons sociales et numéro de SIREN de différentes entreprises sur plus de 400 lignes.

Pour que chacun puisse savoir quelles sont les entreprises qu'il devra traiter (chacun personne a une fin de plage de numéro de SIREN attribuée), je souhaiterai pouvoir intégrer dans une colonne supplémentaire, de façon automatique, le prénom, nom, voire plus simplement encore, les initiales de la personne en charge du dossier par rapport au numéro de SIREN, basé sur les deux derniers chiffres (Le numéro de SIREN compte 9 chiffres). Je m'explique, les numéros de SIREN se terminant par :

de 00 à 09 seront traités par Michel
de 10 à 19 seront traités par Emilie
de 20 à 29 seront traités par Sandrine
de 30 à 38 seront traités par Nathalie
de 39 à 48 seront traités par Marie
de 49 à 58 seront traités par Sophie

Afin qu'ainsi, à l'aide du filtre, en séléctionner ses initiales, la personnes pourra n'afficher que les entreprises qui sont attribuées à ses initiales. De plus, tous les mois seront rentrés manuellement dans le fichier, des nouvelles lignes de nouvelles entreprises et leur numéro SIREN. Je souhaiterais bien entendu qu'automatiquement aussi, la formule se base sur les deux derniers chiffres pour attribuer tout de suite les bonnes initiales.

J'espère avoir été assez clair dans ma demande et je reste à disposition pour tout complément d'information.

Vous remerciant grandement d'avance de la réponse que vous pourrez m'apporter.

Bien cordialement.
 
Dernière édition:

titiborregan5

XLDnaute Accro
Re : Correspondance numéros et initiales

Bonjour et bienvenue sur le forum!!
la formule (mais sans le fichier, difficile d'être précis!):
Code:
 =SI(DROITE(A1;2)<="09";"Michel";SI(DROITE(A1;2)<="19";"Emilie";SI(DROITE(A1;2)<="29";"Sandrine";SI(DROITE(A1;2)<="38";"Nathalie";SI(DROITE(A1;2)<="48";"Marie";SI(DROITE(A1;2)<="58";"Sophie";"autre"))))))

Si tu préfères les initiales, tu remplaces les prénoms par les initiales, mais en laissant les ""

En espérant que ça convienne!
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Correspondance numéros et initiales

Bonjour le fil, bienvenu SP, bonjour le forum,

Puisque tu n'as pas daigné mettre un fichier exemple voici une proposition VBA à adapter...

Code:
Sub Macro1()
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim ts As Variant 'déclare la variable ts (Tableau des Siren)
Dim tp() As String 'déclare le tgableau de variables indexées tp (Tableau des Prénoms)
Dim i As Long 'déclare la variable i (Incrément)

With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1" (à adapter à ton cas)
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A) (à adapter à ton cas)
    ts = .Range("A1:A" & dl) 'définit le tableau des siren
End With 'fin de la prise en compte de l'onglet "Feuil1" (à adapter à ton cas)
For i = 1 To UBound(ts) 'boucle sur toutes les valeurs du tableau ts
    ReDim Preserve tp(1 To i) 'redimensione le tableau des prénoms tp
    Select Case CByte(Right(ts(i, 1), 2)) 'agit en fonction des deux derniers caractères du siren convertis en Byte
        Case Is < 10 'cas <10
            tp(i) = "Michel" 'attribut au tableau tp la variable indéxée "Michel"
        Case 10 To 19 'cas de 10 à 19
            tp(i) = "Émilie" 'attribut au tableau tp la variable indéxée "Émilie"
        Case 20 To 29 'cas de 20 à 29
            tp(i) = "Sandrine" 'attribut au tableau tp la variable indéxée "Sandrine"
        Case 30 To 38 'cas de 30 à 38
            tp(i) = "Nathalie" 'attribut au tableau tp la variable indéxée "Nathalie"
        Case 39 To 48 'cas de 39 à 48
            tp(i) = "Marie" 'attribut au tableau tp la variable indéxée "Marie"
        Case 49 To 58 'cas de 49 à 58
            tp(i) = "Sophie" 'atrribut au tableau tp la variable indéxée "Sophie"
    End Select 'fin de l'action en fonction de...
Next i 'prochaine valeur du tableau des siren
Range("B1").Resize(UBound(tp, 1)) = Application.Transpose(tp) 'tranpose en B1 tableau des prénoms tp
End Sub
 

SP03

XLDnaute Nouveau
Re : Correspondance numéros et initiales

Bonjour les gens !

Tout d'abord, un grand merci pour vos réponses. :-D
Ce n'est pas que je n'ai pas (C'est français ça ?) daigné mettre un fichier d'exemple, c'est simplement que j'ai omis de le faire ;-) Je répare donc cette erreur en vous fournissant un exemple des plus basiques. Vous comprendrez que par mesure de confidentialité, j'ai volontairement supprimer plusieurs colonnes et toutes les informations contenus dans le fichiers original, mais la trame est la bonne puisque dans la colonne C (Initiales) devront apparaître les initiales du gestionnaire chargé du dossier dont le numéro de SIREN se termine de XX à XX contenus dans la colonne D.

Je vous remercie une nouvelle fois d'avance pour votre expertise.

Bien cordialement.
 

Pièces jointes

  • Soumissions-Cumul.xls
    29 KB · Affichages: 45

Robert

XLDnaute Barbatruc
Repose en paix
Re : Correspondance numéros et initiales

Bonjour le fil, bonjour le forum,

En pièce jointe ton fichier modifié avec la macro adaptée. Comme tu le vois il y a des trous mais tu n'as pas indiqué le prénom au-delà de 58. Le code étant commenté tu devrais pouvoir adapter toi-même...
Le fichier :
 

Pièces jointes

  • SP_v01.xls
    52 KB · Affichages: 45

SP03

XLDnaute Nouveau
Re : Correspondance numéros et initiales

Bonjour Robert et merci pour ta rapide réponse !

Je ne suis manifestement pas doué :( J'ai copié ton code VBA dans mon fichier original en essayant de le modifier mais sans succès. J'ai des erreurs d'éxecution ou "L'indice n'appartient pas à la sélection". Je pige pas trop...
Pour te donner plus d'information, dans le fichier qui va être exploité, les numéros de SIREN se trouvent en colonne G et les initiales, doivent se retrouver en colonne C. Je te mets le descriptif complet des initiales par rapport aux numéros de SIREN ci-dessous.

Numéros de SIREN de :

00 à 09 MA
10 à 19 EG
20 à 29 SR
30 à 38 NA
39 à 48 MLP
49 à 58 AP
59 à 67 CM
68 à 77 AC
78 à 87 EC
88 à 91 SG
92 à 95 VB
96 à 99 DR

Je te remercie une nouvelle fois de ta précieuse aide !
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Correspondance numéros et initiales

Bonjour le fil, bonjour le forum,

Comme tu es nouveau, je te recommande de lire la Lien supprimé du forum qui donne tous les bons plans pour obtenir de l'aide rapidement. Tu comprendras mieux pourquoi je t'ai un eu piqué sur le daigner et pourquoi je continue en disant que je ne vois pas trop l'intérêt de fournir un exemple qui ne correspond pas à la réalité de ton fichier. On ne fait que perdre du temps.

Le problème d'Indice doit venir du nom de l'onglet. J'ai modifié le nom de l'onglet de Feuille1 en Feuil1 dans le code et dans la classeur. Si dans ton fichier original l'onglet porte un autre nom, il te faudra l'adapter (le modifier) dans le code. Je te l'avais signalé en commentaire mais visiblement tu ne lis pas les commentaires. Je me demande pourquoi je m'emm... à en faire.
Le fichier modifié et adapté :

 

Pièces jointes

  • SP_v02.xls
    52 KB · Affichages: 50

SP03

XLDnaute Nouveau
Re : Correspondance numéros et initiales

Bonjour Robert,

Tout d'abord merci de ta patience et ton indulgence. Comme je l'avais précisé dans mon message initial je ne peux, par souci de confidentialité, poster le fichier réel. Il s'agit d'entreprises qui sont en contentieux avec nous et comportant plusieurs colonnes des sommes dûes à ma société. Il est donc aisé de comprendre que ces informations ne peuvent en aucun cas circuler sur Internet.

Ensuite, j'ai beau être novice dans Excel, je sais tout de même ce que veut dire (A adapter à ton cas) en commentaire et c'est bien éviemment ce que j'ai fait et c'est ce qui me permet aujourd'hui, après moulte tentatives, de comprendre que le script plante par rapport au nombre de linges contenues dans l'onglet. En effet, jusqu'à 350 lignes, ta macro fonctionne parfaitement mais au delà, elle me renvoi un message d'erreur "Erreur d'éxecution '13' Incompatibilité de type" et mon onglet compte plus de 400 lignes et n'est, de surcroît, pas exhaustif...

C'est celle là, par contre, que je n'arrive pas à adapter je pense, quand tu me dis : dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A) (à adapter à ton cas)
 
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Correspondance numéros et initiales

Bonjour, SP03, Robert:)

Par formule, en C2 à recopier vers le bas :
=CHOISIR(EQUIV(DROITE(D2;2)*1;{0;10;20;30;39;49;59;68;78;88;92;96};1);"MA";"EG";"SR";"NA";"MLP";"AP";"CM";"AC";"EC";"SG";"VB";"DR")

PS : Avez-vous testé la proposition de titiborregan5, en l'adaptant à votre fichier ?
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Correspondance numéros et initiales

Bonjour le fil, bonjour le forum,

Il est clair que les données confidentielles ne sont jamais recommandées. Mais il est tellement simple de créer un exemple avec des données bidons... C'est ce que font la plupart des utilisateurs de ce forum. Ils perdent d'ailleurs moins de temps à le faire qu'à expliquer que leurs données sont confidentielles...
J'ai donc pris ton fichier exemple et avec de simples copier/coller je suis arrivé a 1261 lignes. Et là, surprise, la macro a planté mais pas du tout où je l'attendait. C'est cette ligne qui a provoqué l'erreur :

Code:
Select Case CByte(Right(ts(i, 1), 2)) 'agit en fonction des deux derniers caractères du siren convertis en Byte
Je l'ai remplacée par :
Code:
Select Case Right(ts(i, 1), 2) 'agit en fonction des deux derniers caractères du siren
Et ça semble marcher...
Le fichier :

 

Pièces jointes

  • SP_v03.xls
    154.5 KB · Affichages: 23
Dernière édition:

SP03

XLDnaute Nouveau
Re : Correspondance numéros et initiales

C'est exactement la ligne dont j'allais te parler. J'ai passé le script ce matin à un ami qui, après plusieurs tests à réussi à faire passer la macro en supprimant la conversion en Byte. Et maintenant, tout fonctionne correctement sur 3 onglets. L'un contenant plus de 400 lignes, le second un peu plus de 1700 lignes et le troisième, tout petit, ne comprend qu'une cinquantaine de ligne. Le quatrième et dernier onglet quant à lui plante toujours (on est à plus de 10500 lignes) mais il n'est pas aussi important que les trois premiers, donc, dans l'absolu, ce n'est pas grave...

Je vous remercie encore une fois tous pour l'aide précieuse que vous m'avez apporté.
 

Discussions similaires

Statistiques des forums

Discussions
312 416
Messages
2 088 247
Membres
103 784
dernier inscrit
Métro-logue