Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Generer un code

  • Initiateur de la discussion Initiateur de la discussion canard
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

canard

XLDnaute Occasionnel
salut à tous et bon week-end,

je voulais savoir si il est possible de générer un code de la maniére suivante:

A1 = Drosera
B1 = Capensis alba
C1 = DCA01

En C1 c'est le code (celui-ci reprends la premiere lettre de chaque mot contenu dans les cellules A1 et B1 et y ajoute +1)

Est-ce possible ?

Si oui, peut on faire une gestion des doublons pour la valeur +1, c'est à dire que si le code DCA01 est deja présent dans la colonne C alors je passe a DCA02.

C'est peut etre beaucoup demandé, mais si c'est possible se serait super.

Merci d'avance et bonne soirée.
@+
 
Re canard, le fil,

Non, canard.
Visiblement, je me suis mal exprimé et si je t'ai froissé, je te prie de m'en excuser.

Cela dit, je souhaiterais également que tu relises l'ensemble de ce fil et qu'objectivement, tu regardes nos différents échanges... il n'en demeure pas moins que les éléments du problème semblent nous parvenir un peu 'au compte gouttes' là et que si tu as effectivement chercher avant de poster tes remarques, ça ne saute pas forcément aux yeux...  

Alors, une fois de plus, je te prie de m'excuser et je voulais te dire que si tes questions m'avaient paru si 'embêtantes' que ça, je ne me serais même pas arrêté dans ce fil...

En répondant aux questions du forum, je ne souhaite, pour ma part, qu'une chose : c'est que l'interlocuteur comprenne ce que j'ai essayé de proposer. Et si ce n'est pas le cas, alors j'ai tout bonnement l'impression d'avoir échoué...

Bonne soirée.

Cordialement,
 
salut ,

c'est aussi que je suis tellement en colére envers moi-même de ne pas y réussir tout seul que j'ai vite pris la mouche.

La seule précision que je voulais savoir c'est que quand je supprime une ligne par exemple et que j'execute ta macro une nouvelle fois les codes deja générer se modifie, je m'explique:

si le AVA01, AVA02 et AVA03 existe, je supprime le code AVA02 et j'execute ta macro le code AVA03 passe en AVA02.
Moi je voudrais que chaque code créé reste comme il est et si le code AVA02 est supprimé le code AVA03 reste AVA03, et le suivant code AVA passe à AVA02 ou AVA04..
L'important pour moi c'est que chaque code reste en place une fois créé.

Sinon tu n'as pas échoué, je te rassure.
Je m'exuse aussi d'avoir pris la mouche car je galére tellement derriere mon ecran que je m'emporte facilement.

Sinon si mon probléme est trop complexe, c'est pas grave je mettrai les code manuellement.

Encore merci
@+
 
Re canard,

Désolé, mais ma macro ne fonctionnera pas avec cette nouvelle contrainte...

Le code que je t'ai soumis analyse la colonne C et donne un numéro d'ordre à chaque occurence (doublon) rencontrée.

Je reprends ton exemple : il existe au départ 3 éléments identiques et tu supprimes le n°2
Deux situations se présentent alors au prochain lancement de la macro : [ol][ul][li]1ère situation :
Les données de la colonne C sont entièrement effacées avant le traitement : alors l'élément n°3 viendra automatiquement remplacer l'ancien n°2 et le code généré pour cet élément se trouve donc modifié.[/li]
[li]2ème situation :
Les données de la colonne C ne sont pas effacées avant traitement et on décide de ne générer un code que pour les éléments nouveaux : la macro comptant le nombre d'occurences, si tu rajoutes un élément identique ultérieurement, tu te retrouves automatiquement avec deux fois le code n° '...03'.[/li][/ul][/ol]
Désolé donc, pas de solution pour ma part.

Cordialement,
 
Canard,

Avec ce que je t'avais proposé, une adaptation est possible si tu supprime une ligne puisque je prends la plus grande valeur entre les doublons et que j'y ajoute 1. Ca marchera donc si tu supprime le ..02 et que le ..03 existe (le prochain sera le 04). Par contre si tu supprimes le ..03, le code ne pourras pas deviner qu'il y avait déjà un ..03 et prendra à nouveau cette valeur pour le suivant.

J'ai repris tes dernières demandes et corriger mon code :

Sub AjoutCode()
Dim strCode As String, I As Integer, L As Long, J As Long, N As Integer

L = 1
While Range('A' & L).Value <> ''
strCode = Left(Range('A' & L).Value, 1)
I = 1
Do While I > 0
I = InStr(I + 1, Range('A' & L).Value, ' ')
If I > 0 Then
strCode = strCode & Left(Mid(Range('A' & L).Value, I + 1), 1)
End If
Loop
strCode = strCode & Left(Range('B' & L).Value, 1)
I = 1
Do While I > 0
I = InStr(I + 1, Range('B' & L).Value, ' ')
If I > 0 Then
strCode = strCode & Left(Mid(Range('B' & L).Value, I + 1), 1)
End If
Loop
J = 1
N = 0
strCode = UCase(strCode)
While Range('C' & J).Value <> ''
If J <> L Then
If Left(Range('C' & J).Value, Len(Range('C' & J).Value) - 2) = strCode Then
If CInt(Right(Range('C' & J).Value, 2)) > N Then N = CInt(Right(Range('C' & J).Value, 2))
End If
End If
J = J + 1
Wend

N = N + 1
If Range('C' & L).Value = '' Then
If N < 10 Then
Range('C' & L).Value = strCode & '0' & N
Else
Range('C' & L).Value = strCode & N
End If
End If
L = L + 1
Wend
End Sub

Message édité par: soft, à: 24/10/2005 06:30
 
salut à tous,

pour vous prouver mon imconpétence, j'ai meme pas réussi a adpter le code dans mon fichier.

J'ai essayé de le faire fonctionner à partir de la cellule A3 mais pas moyen.

J'ai essayé les truc simple du genre:

While Range('A3:A1000' & L).Value <> ''
ou

While Range('a3:a' & Range('a65536').End(xlUp).Row).Value <> ''

mais forcement ça ne marche pas.
Je suis vraiment mauvais


@+
 
Salut Canard,

on utilise While pour faire des boucles tant qu'un condition est remplie (ou non remplie), c'est donc pas possible de direcement donné l'adresse des lignes, car la condition ne changerait jamais et la boucle sera sans fin.

Dans mon code :

L = 1
While Range('A' & L).Value <> ''

signifie qu'on commence à la Cellule A1 (change juste L=3 pour commencer à A3).
Plus bas on dira L=L+1 (on passe à la cellule suivante dans la colonne A).
La boucle s'arretera quand il n'y aura plus de valeur dans la cellule atteinte (on ne sait pas à l'avance s'il va jusqu'à A100, A1000, A65000).
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
408
Réponses
15
Affichages
776
Réponses
2
Affichages
264
Réponses
10
Affichages
779
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…