Mettre cette formule en VBA
viret1290
Messages postés
141
Date d'inscription
Statut
Membre
Dernière intervention
-
viret1290 Messages postés 141 Date d'inscription Statut Membre Dernière intervention -
viret1290 Messages postés 141 Date d'inscription Statut Membre Dernière intervention -
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
A voir également:
- Mettre cette formule en VBA
- Formule si et - Guide
- Excel mise en forme conditionnelle formule - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Formule somme excel colonne - Guide
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.
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
Merci
EDIT : Ajout des balises de code
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
Merci
If 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 ?
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
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 ?
il me reste à l'intégrer dans une boucle.
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:
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