Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1587 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Générer code sous excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Générer code sous excel

n°1229943
Mc canard
Posté le 24-10-2005 à 20:04:08  profilanswer
 

salut à tous,
 
dans mon classeur excel, je voulais generer un code qui se place en colonne C par rapport au mot inscrit en colonne A et B sur la meme ligne.
 
Je m'explique :
 
A3 = drosera
B3 = capensis alba
C3 = DCA01 (le fameux code)
 
En gros le code generer prend la premiere lettre de chaque mot plus la valeur 01, si DCA01 existe alors il pass a DCA02, etc...
 
On m'a gentillement fait la macro, mais je n'arrive pas a l'adapter pour que le processus commence a partir de A3, car la si il n'y a rien en ligne 1 ça ne marche pas.
 
Voici la macro:
 
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
 
 
Donc si quelqu'un a une idée, qu'il n'hésite pas ???
 
Merci
@+

mood
Publicité
Posté le 24-10-2005 à 20:04:08  profilanswer
 

n°1230160
galopin01
Posté le 25-10-2005 à 05:01:05  profilanswer
 

Bonjour,
 
Sub AjoutCode()  
Dim strCode As String, I As Integer, L As Long, J As Long, N As Integer  
 
L = 3
 
... le reste sans changement
A+

n°1230167
Mc canard
Posté le 25-10-2005 à 07:26:49  profilanswer
 

salut,
 
merci galopin01, ça fonctionne bien a partir de la 3é ligne, mais maintenant la macro se comporte differement.
Car si un code existe ça passe a la valeur +1 normalement, et maintenant si le code AVA01 existe alors le suivant code generer et aussi AVA01 et non AVA02.
 
@+

n°1230181
galopin01
Posté le 25-10-2005 à 08:57:39  profilanswer
 

bonjour,
J'ai trouvé plus simple de refaire à ma manière :

Code :
  1. Sub AjoutCode()
  2. Dim strC$, i&, iR&, J&, N%, TabloA$(), TabloB$()
  3. iR = 3
  4. While Cells(iR, 1) <> ""
  5.   strC = Left(Cells(iR, 1), 1)
  6.   TabloA = Split(Cells(iR, 1))
  7.     For k = 1 To UBound(TabloA)
  8.       strC = strC & Left(TabloA(k), 1)
  9.     Next
  10.   strC = strC & Left(Cells(iR, 2), 1)
  11.   TabloB = Split(Cells(iR, 2))
  12.     For k = 1 To UBound(TabloB)
  13.       strC = strC & Left(TabloB(k), 1)
  14.     Next
  15.   N = 1
  16.   For i = 3 To iR - 1
  17.     If Left(Cells(i, 3), Len(Cells(i, 3)) - 2) = strC Then N = N + 1
  18.   Next
  19.   If Cells(iR, 3) = "" Then
  20.     If N < 10 Then
  21.       Cells(iR, 3) = strC & "0" & N
  22.     Else
  23.       Cells(iR, 3) = strC & N
  24.     End If
  25.   End If
  26.   iR = iR + 1
  27. Wend
  28. End Sub


A+

n°1230350
Mc canard
Posté le 25-10-2005 à 12:43:34  profilanswer
 

salut galopin01,
 
merci beaucoup, ton code marche super, je vais l'utiliser plutot que l'autre.
 
Par contre ou peut on rajouter Ucase pour avoir tout le code generé en majuscule.
 
Merci encore.
@+

n°1230970
galopin01
Posté le 25-10-2005 à 20:08:11  profilanswer
 

bonsoir,
ligne 17, 21 et 23 remplacer strC par UCase(strC)
A+


---------------
roger
n°1230977
Mc canard
Posté le 25-10-2005 à 20:14:13  profilanswer
 

salut galopin,
 
ce que j'ai fait , c'est que entre la ligne 14 et 15 j'ai ajouté ceci:
 
 strC = UCase(strC)
 
et ça marche.
 
Vaut il mieu utiliser ta méthode ou la mienne fonctionne pareille ?
 
Merci
@+

n°1231001
galopin01
Posté le 25-10-2005 à 20:56:09  profilanswer
 

oui, c'est encore plus simple
Au plaisir.

n°1231019
Mc canard
Posté le 25-10-2005 à 21:37:52  profilanswer
 

ok  
merci encore


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Générer code sous excel

 

Sujets relatifs
Impression de code sources[VBA Excel] lancement du prg des l'ouverture d'excel
source code de jeux commerciauxformulaire : générer un mot de passe a partir du nom...
[Excel VBA] Champ facultatifExport Active Directory vers Excel
Forcer un fichier .xls à s'ouvrir dans excelImpression de la page courante sous excel
relier Excel et PostgreSQL 
Plus de sujets relatifs à : Générer code sous excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR