Mettre cette formule en VBA
viret1290
Messages postés
146
Statut
Membre
-
viret1290 Messages postés 146 Statut Membre -
viret1290 Messages postés 146 Statut Membre -
Bonjour,
Je désirs faire ceci est en VBA.
=SI(CODE(STXT(A7;2;1))>=97;
GAUCHE(A7;EQUIV(VRAI;EXACT(STXT(A7;LIGNE($1:$255);3);MAJUSCULE(STXT(A7;LIGNE($1:$255);3)));0));
STXT(A7;EQUIV(FAUX;EXACT(STXT(A7;LIGNE($1:$255);3);MAJUSCULE(STXT(A7;LIGNE($1:$255);3)));0)+1;999))
Quelqu'un peut m'aider.
Merci
Je désirs faire ceci est en VBA.
=SI(CODE(STXT(A7;2;1))>=97;
GAUCHE(A7;EQUIV(VRAI;EXACT(STXT(A7;LIGNE($1:$255);3);MAJUSCULE(STXT(A7;LIGNE($1:$255);3)));0));
STXT(A7;EQUIV(FAUX;EXACT(STXT(A7;LIGNE($1:$255);3);MAJUSCULE(STXT(A7;LIGNE($1:$255);3)));0)+1;999))
Quelqu'un peut m'aider.
Merci
6 réponses
-
Bonjour,
T'aider... oui.
Le faire à ta place... non.
Qu'as tu essayé ?
Sur quoi bloques tu ?
Déjà.. tu pourrais commencer par gérer par petits morceaux avant d'essayer de tout mettre diretement...
par exemple.. pour remplacer les fonctions"gauche".. tu as LEFT
Pour "majuscule" c'est UCase
Le "si" c'est IF / Else...
Le stxt .. c'est "mid"
etc...
il suffit de chercher le mot sur internet en indiquant VBA .. et tu trouveras les équivalences sans souci.
-
Bonsoir,
J'ai posté mon code, mais il ne s'affiche pas donc je e remet une fois.
Il ne fonctionne pas il m'indique des erreurs. quelqu'un peux m'aider
MerciIf Mid(Cells(9, 1), 2, 1) >= 97 Then 'SI(CODE(STXT(A9;2;1))>=97 left(cells(9,1),Index(true,Exact(Mid(cells(9,1), Rows(1,255),3), UCase(Mid(cells(9,1),Rows(1,255,3))),0)) 'GAUCHE(A9;EQUIV(VRAI;EXACT(STXT(A9;LIGNE($1:$255);3);MAJUSCULE(STXT(A9;LIGNE($1:$255);3)));0)) Else Mid(Cells(9,1),Index(False,Exact(Mid(cells(9,1),Rows(1,255,3), UCase(Mid(cells(9,1),Rows(1,255,3))),0)+1,999)) 'STXT(A9;EQUIV(FAUX;EXACT(STXT(A9;LIGNE($1:$255);3);MAJUSCULE(STXT(A9;LIGNE($1:$255);3)));0)+1;999))}" End If
EDIT : Ajout des balises de code-
Et la fonction index ?
Et la fonction Exact ?
Tu ne les transformes pas en "vba" ?
Et tu fais quoi des lignes qui sont dans ton if/else ? Tu ne les stockes pas dans une variable ou afficher le résultat dans une cellule ?
De plus, il ne suffit pas de transformer une formule mot à mot pour que ça marche.
parfois il est préférable de changer un peu le raisonnement....
Que souhaites tu réaliser exactement ?
-
-
A1 il y a le nom de famille en majuscules et le prénom avec la 1ère lettre du prénom en majuscule et le reste en minuscule.
J'aimerai en
A2 j'aimerai le nom de famille
A3 le prénom
Si vous voyez comment faire par macro -
Voici mon code il fonctionne, mais peut-être long ?
Private Sub CommandButton3_Click() 'Extraire les données séparées par un espace dans une chaine de caractères 'Sub extractionMots() Dim Tableau() As String Dim i As Integer 'découpe la chaine en fonction des espaces " " Tableau = Split(Cells(1, 1)) 'boucle sur le tableau pour visualiser le résultat For i = 0 To UBound(Tableau) 'Le résultat s'affiche dans la fenêtre d'execution de l'éditeur de macros Debug.Print Tableau(i) Cells(1, i + 2) = Tableau(i) Next i If Cells(1, 2) = UCase(Cells(1, 2)) Then If Cells(1, 3) = UCase(Cells(1, 3)) Then Cells(1, 8) = Cells(1, 2) & " " & Cells(1, 3) If Cells(1, 4) <> "" And Cells(1, 5) = "" Then Cells(1, 9) = Cells(1, 4) Else If Cells(1, 4) <> "" And Cells(1, 5) <> "" And Cells(1, 6) = "" Then Cells(1, 9) = Cells(1, 4) & " " & Cells(1, 5) Else If Cells(1, 4) <> "" And Cells(1, 5) <> "" And Cells(1, 6) <> "" Then Cells(1, 9) = Cells(1, 4) & " " & Cells(1, 5) & " " & Cells(1, 6) End If End If End If Else Cells(1, 8) = Cells(1, 2) End If End If End Sub
il me reste à l'intégrer dans une boucle. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Plus simple avec RegExp , classeur à télécharger:
http://boisgontierjacques.free.fr/pages_site/chainesvba.htm#RegExp
Sinon si tu tiens à ton code voilà une boucle sur la colonne A:
Dim derniereLigne As Long Dim j As Integer derniereLigne = Range("A" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne A For j = 1 To derniereLigne 'remplacer la ligne 1 par j dans ton code Next j
-