Bonjour , j'ai un tableau que j'utilise depuis 5 ans mais je voudrais l'updater si c'est possible .
1°) Il faudrait revoir la formule de mon USF pour que la 1ére ligne qui se remplie est la ligne 2 et pas la 3 comme actuellement . Je ne sais pourquoi cette ligne est là par contre j'ai du mettre des _______ en B3 pour que la formule fonctionne .
2°) Dans ma feuille j'ai ajouté un onglet STATS et c'est la que j'ai besoin de vos compétences car je voudrais relié ma feuille LOG à STATS .
En faite dans mon tableau LOG en colonne C je rentre des références comme par exemple 12ABC123 , en dessous 19ZZ234 et autres mais toujours et uniquement en colonne C .
Mais les chiffres avant les lettres seul eux m'intéresse , les chiffres sont pour l'instant de 1 à 352 mais avec évolution à 400 .
Donc je voudrais savoir s'il était possible que quand je note 12ABC123 le 12 est déjà connu dans la feuille STATS en colonne B (Prefix) et que le 12 se mette automatiquement dans le tableau DXCCs Worked de H2 à Q41 comme j'ai mis en modèle de ligne en ligne et au fur et à mesure et pas spécialement en ordre croissant et en évitant les doublons , exemple si 12 est déjà noté dans le tableau DXCCs Worked il ne figureras pas deux fois .
Pour résumer quand je note 12ABC123 dans LOG en C , le chiffre 12 est reconnu dans STATS (Prefix) et qu'il s'ajoute automatiquement dans le tableau DXCCs Worked .
J'espère avoir pensé à tout dans mes explications , auquel cas demandez en commentaires , d'avance merci pour votre aide . Fichier joint . Cdlt Philippe .
Bonjour Paul,
Pour le pont 1 pas bien compris. Essayez d'être plus clair.
Pour le 2 un essai en PJ avec cette macro :
Code:
Sub Worksheet_Activate()
Dim DL%, L%, C%, i%, Tablo
[H2:Q41].ClearContents
DL = Sheets("LOG").[C10000].End(xlUp).Row
Tablo = Sheets("LOG").Range("C4:C" & DL)
L = 2: C = 8
For i = 1 To UBound(Tablo)
Cells(L, C) = Val(Left(Tablo(i, 1), 3))
C = C + 1
If C = 18 Then C = 8: L = L + 1
Next i
End Sub
La macro s'exécute automatiquement lorsqu'on sélectionne la feuille STATS.
NB : J'ai mis la PJ en xlsb ce qui la rend plus légère ( 547ko au lieu de 4Mo )
Vous pouvez la conserver ainsi sauf si vous êtes sous Android, sinon enregistrez la en xlsm. ( non pas en xls qui est un vieux format alors que vous avez 365 )
C'est bien ce dont j'avais en tête mais peut on éviter les doublons car si 14 est déjà dans le tableau DXCCs Worked voir pour qu'il ne se remette pas car tous les numéros reviendrons forcément plusieurs fois .
Pour le 1°) Pas bien grave car je vais descendre ma barre de filtre car je dois sécuriser du contenu .
Bonsoir à toutes & à tous, bonsoir @Phil Du59, bonsoir @sylvanu
Le travail est déjà fait, mais je voulais voir si, avec ma toute récente version 2024, je serais capable de traiter cela par formule.
Et bien oui, avec en plus un tri !
J'ai quand même modifier un peu la feuille LOG pour utiliser un Tableau Structuré nommé "tbLOG" qui intègre l'index.
Du coup j'ai actualiser ta macro "Worksheet_Change" et le code de ton UserForm (mais rien de bien méchant).
"lst" représente la liste des préfixes numérique triée et sans doublon (ça c'est le rôle des fonctions TRIER et UNIQUE) de la colonne du TS tbLOG[QRZ] BYROW permet d'appliquer à chaque ligne de tbLOG[QRZ] la fonction LAMBDA qui suit.
Cette fonction LAMBDA convertit en nombre le préfixe numérique (de 1 à 3 caractères).
On détecte que le caractère est numérique en testant si son code est inférieur ou égal à 57 (j'aurais pu ajouter le test >= 48) mais bon ...).
SOMMEPROD me permets d'avoir la longueur du préfixe que j'extrais avec la fonction GAUCHE et je convertis tout ça en nombre avec CNUM.
Maintenant que j'ai la liste des préfixes il faut la distribuer dans le tableau "DXCCs Worked" sur NB lignes de 10 colonnes.
PLAFOND.MATH(LIGNES(lst)/10;1) me renvoie NB, le nombre de lignes à utilliser (pas forcément complètes).
SEQUENCE(NB, 10) me renvoie un tableau de NB lignes sur 10 colonnes numéroté séquenciellement de 1 à 10*NB.
Je passe cela à INDEX(lst; ... ) et cela me renvoie lst répartie dans le tableau résultat. Avec un petit mais : les cellules excédentaires comportent un #REF puisqu'il n'y a aucune valeur renvoyée pour celles-ci. C'est le rôle de la fonction SIERREUR qui remplace ces erreurs par une chaîne vide.
Voilà
Malheureusement cela ne s'adresse qu'à ceux qui ont EXCEL365 ou 2024, mais je me suis bien amusé quand même.
Voir la pièce jointe
Bonjour , désolé j'ai oublié de répondre à Alain , donc merci de vous y être penché mais je vais gardé la version proposé par Sylvanu qui pour moi est plus simple pour mes petites connaissances .