[VBA excel] nombre de caractères
Résolu/Fermé
A voir également:
- Vba compter le nombre de caractère dans une chaine
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
Bonjour Schont,
Voici un code applicable à ton problème.
Tu peux recopier ces 2 macros dans un module VBA. Pour changer les adresses des cellules, il te suffit de les modifier dans le code de la Macro1(). Ensuite, tu lances l'exécution de la Macro1 par le moyen que tu veux, un bouton de commande ou un événement de la feuille de calcul, par exemple.
Cordialement.
Papou
Voici un code applicable à ton problème.
Tu peux recopier ces 2 macros dans un module VBA. Pour changer les adresses des cellules, il te suffit de les modifier dans le code de la Macro1(). Ensuite, tu lances l'exécution de la Macro1 par le moyen que tu veux, un bouton de commande ou un événement de la feuille de calcul, par exemple.
Sub Macro1() MacroFormatCode "A1", "A2", "A3", "B1" ' A1, A2 et A3 contiennent les codes, B1 le résultat sur 12 chiffres End Sub Sub MacroFormatCode(Cell1 As String, Cell2 As String, Cell3 As String, CellR As String) ' Cell1=cellule contenant le 1er code ' Cell2=cellule contenant le 2àme code ' Cell3=cellule contenant le 3ème code ' CellR=cellule contenant le code à 12 chiffres Dim Code As String ' Concaténation du code Code = Range(Cell1) & Range(Cell2) & Range(Cell3) ' Mise au format texte de la cellule du code Range("b1").NumberFormat = "@" ' Définit le code en fonction de sa longueur Select Case Len(Code) Case Is < 13 Range(CellR) = Format(Code, "000000000000") Case Else Range(CellR) = Left$(Code, 12) End Select End Sub
Cordialement.
Papou
Merci !!
c'est ce que je voulais, sauf que les "0" se rajoutent devant et non derrière mais finalement ca me va,
Bonne journée
c'est ce que je voulais, sauf que les "0" se rajoutent devant et non derrière mais finalement ca me va,
Bonne journée
Re-bonjour Schont,
Qu'à celà ne tienne ! Modifie la macro 'MacroFormatCode' comme suit :
Sub MacroFormatCode(Cell1 As String, Cell2 As String, Cell3 As String, CellR As String)
' Cell1=cellule contenant le 1er code
' Cell2=cellule contenant le 2àme code
' Cell3=cellule contenant le 3ème code
' CellR=cellule contenant le code à 12 chiffres
Dim Code As String
' Concaténation du code
Code = Range(Cell1) & Range(Cell2) & Range(Cell3)
' Mise au format texte de la cellule du code
Range(CellR).NumberFormat = "@"
' Définit le code en fonction de sa longueur
Select Case Len(Code)
Case Is < 13
Range(CellR) = Code & Right$("000000000000", 12 - Len(Code)) Case Else
Range(CellR) = Left$(Code, 12)
End Select
End Sub
Qu'à celà ne tienne ! Modifie la macro 'MacroFormatCode' comme suit :
Sub MacroFormatCode(Cell1 As String, Cell2 As String, Cell3 As String, CellR As String)
' Cell1=cellule contenant le 1er code
' Cell2=cellule contenant le 2àme code
' Cell3=cellule contenant le 3ème code
' CellR=cellule contenant le code à 12 chiffres
Dim Code As String
' Concaténation du code
Code = Range(Cell1) & Range(Cell2) & Range(Cell3)
' Mise au format texte de la cellule du code
Range(CellR).NumberFormat = "@"
' Définit le code en fonction de sa longueur
Select Case Len(Code)
Case Is < 13
Range(CellR) = Code & Right$("000000000000", 12 - Len(Code)) Case Else
Range(CellR) = Left$(Code, 12)
End Select
End Sub
Pardon, réponse envoyée trop vite.
Voici la bonne méthode :
Cordialement.
Voici la bonne méthode :
Sub MacroFormatCode(Cell1 As String, Cell2 As String, Cell3 As String, CellR As String) ' Cell1=cellule contenant le 1er code ' Cell2=cellule contenant le 2àme code ' Cell3=cellule contenant le 3ème code ' CellR=cellule contenant le code à 12 chiffres Dim Code As String ' Concaténation du code Code = Range(Cell1) & Range(Cell2) & Range(Cell3) ' Mise au format texte de la cellule du code Range(CellR).NumberFormat = "@" ' Définit le code en fonction de sa longueur Select Case Len(Code) Case Is < 13 Range(CellR) = Code & Right$("000000000000", 12 - Len(Code)) Case Else Range(CellR) = Left$(Code, 12) End Select End Sub
Cordialement.
Merci ca marche très bien, mais (oui je sais ya toujours un "mais" avec moi ...) je dois utiliser ce code pour de nombreux produits et donc l'utiliser sur de nombreuses lignes, je suis débutant en macro donc si j'utilise mal le code il faut me le dire : actuellement je copie la macro dans Visual Basic je modifie les cellules par celles que j'utilise par exemple A3, B3, C3 pour les infos et D3 pour le résultat, je met une petite icone au bout de chaque ligne et je lui affecte la macro puis je clique et hop ca marche.
C'est donc assez long surtout qu'il y a beaucoup de lignes ...
Je voudrais savoir si cette macro pourrait être utiliser en fonction, exmple : dans ma case de résultat excel j'inscris "='nom d'une fonction'(A3;B3;C3)" et le resultat s'affiche tout seul comme je peux faire un copié déplacé et tout le tableau est rempli.
J'ai essayé en commencant par :
' Ajout de la fonction
Public Function CalcNb(Cell1 As String, Cell2 As String, Cell3 As String)
' Concaténation du code
...
Mais excel ne reconnait pas la fonction (erreur #NOM?)
Si quelqu'un veut bien se pencher sur mon problème,
Après, promis, j'arrête de vous embêter !!
Merci encore
C'est donc assez long surtout qu'il y a beaucoup de lignes ...
Je voudrais savoir si cette macro pourrait être utiliser en fonction, exmple : dans ma case de résultat excel j'inscris "='nom d'une fonction'(A3;B3;C3)" et le resultat s'affiche tout seul comme je peux faire un copié déplacé et tout le tableau est rempli.
J'ai essayé en commencant par :
' Ajout de la fonction
Public Function CalcNb(Cell1 As String, Cell2 As String, Cell3 As String)
' Concaténation du code
...
Mais excel ne reconnait pas la fonction (erreur #NOM?)
Si quelqu'un veut bien se pencher sur mon problème,
Après, promis, j'arrête de vous embêter !!
Merci encore
Bonjour Schont,
Sous forme de fonction, je n'ai pas eu le temps d'y réfléchir,
Mais si tu veux une macro "universelle", je t'adresse la précédente modifiée qui
fonctionne de la manière suivante :
Tu te positionnes sur la ligne désirée, puis tu lances son exécution (elle détecte
automatiquement le numéro de la ligne active).
Dans ton cas, il te reste à préciser les N° de colonnes adaptés à ton tableau.
Cordialement.
Sous forme de fonction, je n'ai pas eu le temps d'y réfléchir,
Mais si tu veux une macro "universelle", je t'adresse la précédente modifiée qui
fonctionne de la manière suivante :
Tu te positionnes sur la ligne désirée, puis tu lances son exécution (elle détecte
automatiquement le numéro de la ligne active).
Dans ton cas, il te reste à préciser les N° de colonnes adaptés à ton tableau.
Cordialement.
Sub MacroFormatCode() lg = ActiveCell.Row Cell1 = Cells(lg, 1).Address Cell2 = Cells(lg, 2).Address Cell3 = Cells(lg, 3).Address CellR = Cells(lg, 4).Address Dim Code As String ' Concaténation du code Code = Range(Cell1) & Range(Cell2) & Range(Cell3) ' Mise au format texte de la cellule du code Range(CellR).NumberFormat = "@" ' Définit le code en fonction de sa longueur Select Case Len(Code) Case Is < 13 Range(CellR) = Code & Right$("000000000000", 12 - Len(Code)) Case Else Range(CellR) = Left$(Code, 12) End Select End Sub