hello !
je me heurte à un problème vraiment très con :
ma société m'a envoyé un fichier client tout en majuscules, donc volumineux
à l'impression et peu lisible...
Je sélectionne donc tout mon tableau, je me dirige naturellement vers
"Format / Cellule / Police" et là : surprise !!!
rien, pas le moindre bouton pour basculer majuscules/minuscules....
j'ai fouillé dans les paramètres d'affichage, et je ne trouve pas cette
fonction...
Tblo = Rg.Formula For A = 1 To UBound(Tblo, 1) For b = 1 To UBound(Tblo, 2) If Tblo(A, b) <> "" Then If Left(Tblo(A, b), 1) <> "=" And Left(Tblo(A, b), 1) <> "+" Then Tblo(A, b) = LCase(Tblo(A, b)) End If End If Next Next Rg = Tblo Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic etc etc
enfin, vous serait il possible de me décrire pas à pas, menu par menu, onglet par onglet, (depuis mon tableau non selectionné) ce qu'il faut faire pour créer cette fichue macro ? je ne m'en sors pas ! ;)
merci de votre patience. Si elle a atteint ses limites, inutile de m'insulter, je sors avant ! ;))
@+ jean
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
#nU8sojdDHA.3876@TK2MSFTNGP11.phx.gbl...
Bonjour Jean,
Cool, je vois que vous avez été nombreux à me répondre, c'est vraiment sympa
!!!
bon, je vais finir par l'avouer : je suis une grosse bille qui ne comprend
rien aux macros...
d'abord, j'ai vu que dans beaucoup de programmes proposés, l'alignement
gauche est "décalé".. est ce normal ?
exemple :
Tblo = Rg.Formula
For A = 1 To UBound(Tblo, 1)
For b = 1 To UBound(Tblo, 2)
If Tblo(A, b) <> "" Then
If Left(Tblo(A, b), 1) <> "=" And Left(Tblo(A, b), 1) <> "+"
Then
Tblo(A, b) = LCase(Tblo(A, b))
End If
End If
Next
Next
Rg = Tblo
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
etc etc
enfin, vous serait il possible de me décrire pas à pas, menu par menu,
onglet par onglet, (depuis mon tableau non selectionné) ce qu'il faut faire
pour créer cette fichue macro ? je ne m'en sors pas ! ;)
merci de votre patience. Si elle a atteint ses limites, inutile de
m'insulter, je sors avant ! ;))
Tblo = Rg.Formula For A = 1 To UBound(Tblo, 1) For b = 1 To UBound(Tblo, 2) If Tblo(A, b) <> "" Then If Left(Tblo(A, b), 1) <> "=" And Left(Tblo(A, b), 1) <> "+" Then Tblo(A, b) = LCase(Tblo(A, b)) End If End If Next Next Rg = Tblo Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic etc etc
enfin, vous serait il possible de me décrire pas à pas, menu par menu, onglet par onglet, (depuis mon tableau non selectionné) ce qu'il faut faire pour créer cette fichue macro ? je ne m'en sors pas ! ;)
merci de votre patience. Si elle a atteint ses limites, inutile de m'insulter, je sors avant ! ;))
@+ jean
michdenis
Bonjour Jean,
D ) Dans la procédure tu dois modifier le nom de la feuille pour celle de ton application dans cette ligne de code de la
procédure : Set Rg = Worksheets("Feuil1").UsedRange
cette ligne n'est pas présente dans la procédure que tu m'as donnée. Dois je la rajouter ? si oui, a quel endroit ? ma feuille s'appelle bien "feuil1"
C'EST LA QUATRIÈME LIGNE DE TEXTE DE LA PROCÉDURE INCLUANT LA LIGNE DE DÉCLARATION DE LA PROCÉDURE.
E ) La procédure va traiter toutes les cellules de la feuille indiquée. une fois que j'ai copié la formule, vu qu'il n'y a pas de bouton pour
"lancer" son application. donc, je l'ai fermée (croix en haut droite)... et rien ne se passe......
DANS LA FEUILLE DE CALCUL : Barre de menu / outils / Macro / Macro.../ et dans la fenêtre qui s'ouvre, tu sélectionne le nom de la macro et un clic sur le bouton "Exécuter"
Salutations!
-------------------------- Sub MiseEnMajusculePremièreLettre()
Tblo = Rg.Formula For A = 1 To UBound(Tblo, 1) For b = 1 To UBound(Tblo, 2) If Tblo(A, b) <> "" Then If Left(Tblo(A, b), 1) <> "=" And Left(Tblo(A, b), 1) <> "+" Then Tblo(A, b) = LCase(Tblo(A, b)) End If End If Next Next Rg = Tblo Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Set MaPlage = Nothing
End Sub '--------------------------
Bonjour Jean,
D ) Dans la procédure tu dois modifier le nom de la feuille pour celle de
ton application dans cette ligne de code de la
procédure : Set Rg = Worksheets("Feuil1").UsedRange
cette ligne n'est pas présente dans la procédure que tu m'as donnée.
Dois je la rajouter ? si oui, a quel endroit ? ma feuille s'appelle bien
"feuil1"
C'EST LA QUATRIÈME LIGNE DE TEXTE DE LA PROCÉDURE INCLUANT LA LIGNE DE DÉCLARATION DE LA PROCÉDURE.
E ) La procédure va traiter toutes les cellules de la feuille indiquée.
une fois que j'ai copié la formule, vu qu'il n'y a pas de bouton pour
"lancer" son application.
donc, je l'ai fermée (croix en haut droite)... et rien ne se passe......
DANS LA FEUILLE DE CALCUL : Barre de menu / outils / Macro / Macro.../
et dans la fenêtre qui s'ouvre, tu sélectionne le nom de la macro et un clic sur le bouton "Exécuter"
Salutations!
--------------------------
Sub MiseEnMajusculePremièreLettre()
Tblo = Rg.Formula
For A = 1 To UBound(Tblo, 1)
For b = 1 To UBound(Tblo, 2)
If Tblo(A, b) <> "" Then
If Left(Tblo(A, b), 1) <> "=" And Left(Tblo(A, b), 1) <> "+" Then
Tblo(A, b) = LCase(Tblo(A, b))
End If
End If
Next
Next
Rg = Tblo
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Set MaPlage = Nothing
D ) Dans la procédure tu dois modifier le nom de la feuille pour celle de ton application dans cette ligne de code de la
procédure : Set Rg = Worksheets("Feuil1").UsedRange
cette ligne n'est pas présente dans la procédure que tu m'as donnée. Dois je la rajouter ? si oui, a quel endroit ? ma feuille s'appelle bien "feuil1"
C'EST LA QUATRIÈME LIGNE DE TEXTE DE LA PROCÉDURE INCLUANT LA LIGNE DE DÉCLARATION DE LA PROCÉDURE.
E ) La procédure va traiter toutes les cellules de la feuille indiquée. une fois que j'ai copié la formule, vu qu'il n'y a pas de bouton pour
"lancer" son application. donc, je l'ai fermée (croix en haut droite)... et rien ne se passe......
DANS LA FEUILLE DE CALCUL : Barre de menu / outils / Macro / Macro.../ et dans la fenêtre qui s'ouvre, tu sélectionne le nom de la macro et un clic sur le bouton "Exécuter"
Salutations!
-------------------------- Sub MiseEnMajusculePremièreLettre()
Tblo = Rg.Formula For A = 1 To UBound(Tblo, 1) For b = 1 To UBound(Tblo, 2) If Tblo(A, b) <> "" Then If Left(Tblo(A, b), 1) <> "=" And Left(Tblo(A, b), 1) <> "+" Then Tblo(A, b) = LCase(Tblo(A, b)) End If End If Next Next Rg = Tblo Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Set MaPlage = Nothing
End Sub '--------------------------
AV
Ave Denis,
Si je peux me permettre un commentaire ... ** Tu peux ! ;-)
A ) Avec la formule de la feuille de calcul, il me semble qu'il te manque une opération... celle qui consiste à replacer
les données dans sa plage originale .... ** Pourquoi donc ? Elles n'ont pas été déplacées !
et je suppose qu'il n'y a pas trop de formules dans cette plage ;-)) ** Compte-tenu du type probale des données ("..ma société m'a envoyé un fichier
client..."), les formules ne doivent pas se bousculer dans les différents champs... non ? Quoi qu'il en soit, mais mon intervention se situait plus au niveau de la méthode que du cas particulier
B ) Si je lis bien, Est-ce 2.6 secondes ou 26 secondes ? ;-) Tu lis bien 26 (vingt-six) secondes...
Les temps sont approximativement bons (qques petites variations entre 1° et la Xième exécution) Les tests sont faits avec A1:Z5000 contenant "TOTO" Micro climat ? ;-)
Si qqu'un veut s'amuser à refaire les tests.... AV
Ave Denis,
Si je peux me permettre un commentaire ...
** Tu peux ! ;-)
A ) Avec la formule de la feuille de calcul, il me semble qu'il te manque une
opération... celle qui consiste à replacer
les données dans sa plage originale ....
** Pourquoi donc ? Elles n'ont pas été déplacées !
et je suppose qu'il n'y a pas trop de formules dans cette plage ;-))
** Compte-tenu du type probale des données ("..ma société m'a envoyé un fichier
client..."), les formules ne doivent pas se bousculer dans les différents
champs... non ?
Quoi qu'il en soit, mais mon intervention se situait plus au niveau de la
méthode que du cas particulier
B ) Si je lis bien, Est-ce 2.6 secondes ou 26 secondes ? ;-)
Tu lis bien 26 (vingt-six) secondes...
Les temps sont approximativement bons (qques petites variations entre 1° et la
Xième exécution)
Les tests sont faits avec A1:Z5000 contenant "TOTO"
Micro climat ? ;-)
Si qqu'un veut s'amuser à refaire les tests....
AV
Si je peux me permettre un commentaire ... ** Tu peux ! ;-)
A ) Avec la formule de la feuille de calcul, il me semble qu'il te manque une opération... celle qui consiste à replacer
les données dans sa plage originale .... ** Pourquoi donc ? Elles n'ont pas été déplacées !
et je suppose qu'il n'y a pas trop de formules dans cette plage ;-)) ** Compte-tenu du type probale des données ("..ma société m'a envoyé un fichier
client..."), les formules ne doivent pas se bousculer dans les différents champs... non ? Quoi qu'il en soit, mais mon intervention se situait plus au niveau de la méthode que du cas particulier
B ) Si je lis bien, Est-ce 2.6 secondes ou 26 secondes ? ;-) Tu lis bien 26 (vingt-six) secondes...
Les temps sont approximativement bons (qques petites variations entre 1° et la Xième exécution) Les tests sont faits avec A1:Z5000 contenant "TOTO" Micro climat ? ;-)
Si qqu'un veut s'amuser à refaire les tests.... AV
michdenis
Bonjour AV,
Ok pour la recopie, je n'avais pas remarqué que tu avais mis 2 lignes de code sur la même ;-)
Concernant le temps que prend une procédure utilisant un tableau, Si je prends la procédure que j'ai soumise, j'arrive à l'exécuter en 3.7 secondes avec un P2-400 d'intel. La différence est énorme entre 26 secondes et 3.7. !!!
Je publie la procédure utilisée. Et pour les besoins du test, j'ai désactivé la ligne de code qui testait l'existence d'une formule dans la cellule. Si quelqu'un d'autre veut tester ?
'-------------------------- Sub MiseEnMajusculePremièreLettre()
Dim Tblo As Variant, Rg As Range, Start As Double, Finish As Double Start = Timer
Tblo = Rg '.Formula For A = 1 To UBound(Tblo, 1) For B = 1 To UBound(Tblo, 2) If Tblo(A, B) <> "" Then 'If Left(Tblo(A, B), 1) <> "=" And Left(Tblo(A, B), 1) <> "+" Then Tblo(A, B) = LCase(Tblo(A, B)) 'End If End If Next Next Rg = Tblo Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Set MaPlage = Nothing Finish = Timer MsgBox Finish - Start
End Sub '--------------------------
Salutations!
"AV" a écrit dans le message de news: Ave Denis,
Si je peux me permettre un commentaire ... ** Tu peux ! ;-)
A ) Avec la formule de la feuille de calcul, il me semble qu'il te manque une opération... celle qui consiste à replacer
les données dans sa plage originale .... ** Pourquoi donc ? Elles n'ont pas été déplacées !
et je suppose qu'il n'y a pas trop de formules dans cette plage ;-)) ** Compte-tenu du type probale des données ("..ma société m'a envoyé un fichier
client..."), les formules ne doivent pas se bousculer dans les différents champs... non ? Quoi qu'il en soit, mais mon intervention se situait plus au niveau de la méthode que du cas particulier
B ) Si je lis bien, Est-ce 2.6 secondes ou 26 secondes ? ;-) Tu lis bien 26 (vingt-six) secondes...
Les temps sont approximativement bons (qques petites variations entre 1° et la Xième exécution) Les tests sont faits avec A1:Z5000 contenant "TOTO" Micro climat ? ;-)
Si qqu'un veut s'amuser à refaire les tests.... AV
Bonjour AV,
Ok pour la recopie, je n'avais pas remarqué que tu avais mis 2 lignes de code sur la même ;-)
Concernant le temps que prend une procédure utilisant un tableau, Si je prends la procédure que j'ai soumise, j'arrive à
l'exécuter en 3.7 secondes avec un P2-400 d'intel. La différence est énorme entre 26 secondes et 3.7. !!!
Je publie la procédure utilisée. Et pour les besoins du test, j'ai désactivé la ligne de code qui testait l'existence
d'une formule dans la cellule. Si quelqu'un d'autre veut tester ?
'--------------------------
Sub MiseEnMajusculePremièreLettre()
Dim Tblo As Variant, Rg As Range, Start As Double, Finish As Double
Start = Timer
Tblo = Rg '.Formula
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If Tblo(A, B) <> "" Then
'If Left(Tblo(A, B), 1) <> "=" And Left(Tblo(A, B), 1) <> "+" Then
Tblo(A, B) = LCase(Tblo(A, B))
'End If
End If
Next
Next
Rg = Tblo
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Set MaPlage = Nothing
Finish = Timer
MsgBox Finish - Start
End Sub
'--------------------------
Salutations!
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de news:O9pIjTtdDHA.1752@TK2MSFTNGP11.phx.gbl...
Ave Denis,
Si je peux me permettre un commentaire ...
** Tu peux ! ;-)
A ) Avec la formule de la feuille de calcul, il me semble qu'il te manque une
opération... celle qui consiste à replacer
les données dans sa plage originale ....
** Pourquoi donc ? Elles n'ont pas été déplacées !
et je suppose qu'il n'y a pas trop de formules dans cette plage ;-))
** Compte-tenu du type probale des données ("..ma société m'a envoyé un fichier
client..."), les formules ne doivent pas se bousculer dans les différents
champs... non ?
Quoi qu'il en soit, mais mon intervention se situait plus au niveau de la
méthode que du cas particulier
B ) Si je lis bien, Est-ce 2.6 secondes ou 26 secondes ? ;-)
Tu lis bien 26 (vingt-six) secondes...
Les temps sont approximativement bons (qques petites variations entre 1° et la
Xième exécution)
Les tests sont faits avec A1:Z5000 contenant "TOTO"
Micro climat ? ;-)
Si qqu'un veut s'amuser à refaire les tests....
AV
Ok pour la recopie, je n'avais pas remarqué que tu avais mis 2 lignes de code sur la même ;-)
Concernant le temps que prend une procédure utilisant un tableau, Si je prends la procédure que j'ai soumise, j'arrive à l'exécuter en 3.7 secondes avec un P2-400 d'intel. La différence est énorme entre 26 secondes et 3.7. !!!
Je publie la procédure utilisée. Et pour les besoins du test, j'ai désactivé la ligne de code qui testait l'existence d'une formule dans la cellule. Si quelqu'un d'autre veut tester ?
'-------------------------- Sub MiseEnMajusculePremièreLettre()
Dim Tblo As Variant, Rg As Range, Start As Double, Finish As Double Start = Timer
Tblo = Rg '.Formula For A = 1 To UBound(Tblo, 1) For B = 1 To UBound(Tblo, 2) If Tblo(A, B) <> "" Then 'If Left(Tblo(A, B), 1) <> "=" And Left(Tblo(A, B), 1) <> "+" Then Tblo(A, B) = LCase(Tblo(A, B)) 'End If End If Next Next Rg = Tblo Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Set MaPlage = Nothing Finish = Timer MsgBox Finish - Start
End Sub '--------------------------
Salutations!
"AV" a écrit dans le message de news: Ave Denis,
Si je peux me permettre un commentaire ... ** Tu peux ! ;-)
A ) Avec la formule de la feuille de calcul, il me semble qu'il te manque une opération... celle qui consiste à replacer
les données dans sa plage originale .... ** Pourquoi donc ? Elles n'ont pas été déplacées !
et je suppose qu'il n'y a pas trop de formules dans cette plage ;-)) ** Compte-tenu du type probale des données ("..ma société m'a envoyé un fichier
client..."), les formules ne doivent pas se bousculer dans les différents champs... non ? Quoi qu'il en soit, mais mon intervention se situait plus au niveau de la méthode que du cas particulier
B ) Si je lis bien, Est-ce 2.6 secondes ou 26 secondes ? ;-) Tu lis bien 26 (vingt-six) secondes...
Les temps sont approximativement bons (qques petites variations entre 1° et la Xième exécution) Les tests sont faits avec A1:Z5000 contenant "TOTO" Micro climat ? ;-)
Si qqu'un veut s'amuser à refaire les tests.... AV
Jean
"michdenis" a écrit dans le message de news:
Bonjour Jean,
J'ai pas trop eu le temps, donc désolé pour cette parenthèse temporelle, et merci pour ton aide
bon, ça y est, j'ai réussi à executer la macro. le résultat est.. moyen.. beaucoup de cellules sont passées en mnuscules... mais dans un sacré paquet, l'information est remplacée par des "9"
jean
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
e0AoTAtdDHA.3596@TK2MSFTNGP11.phx.gbl...
Bonjour Jean,
J'ai pas trop eu le temps, donc désolé pour cette parenthèse temporelle, et
merci pour ton aide
bon, ça y est, j'ai réussi à executer la macro.
le résultat est.. moyen..
beaucoup de cellules sont passées en mnuscules... mais dans un sacré paquet,
l'information est remplacée par des "9"
J'ai pas trop eu le temps, donc désolé pour cette parenthèse temporelle, et merci pour ton aide
bon, ça y est, j'ai réussi à executer la macro. le résultat est.. moyen.. beaucoup de cellules sont passées en mnuscules... mais dans un sacré paquet, l'information est remplacée par des "9"
jean
michdenis
Bonjour Jean,
"bon, ça y est, j'ai réussi à executer la macro."
à la lumière de ce qui suit, je n'appellerais pas ça une réussite!!! Loin de là !
"le résultat est.. moyen.. beaucoup de cellules sont passées en mnuscules... mais dans un sacré paquet, l'information est remplacée par des "9" "
Je veux bien recevoir une copie de ton fichier si l'information n'est pas "top secret" . Prière de m'envoyer que la feuille concerné , je n'ai pas besoin de la totalité de l'application.
Adresse :
Salutations!
Bonjour Jean,
"bon, ça y est, j'ai réussi à executer la macro."
à la lumière de ce qui suit, je n'appellerais pas ça une réussite!!! Loin de là !
"le résultat est.. moyen..
beaucoup de cellules sont passées en mnuscules... mais dans un sacré paquet,
l'information est remplacée par des "9" "
Je veux bien recevoir une copie de ton fichier si l'information n'est pas "top secret" . Prière de m'envoyer que la
feuille concerné , je n'ai pas besoin de la totalité de l'application.
à la lumière de ce qui suit, je n'appellerais pas ça une réussite!!! Loin de là !
"le résultat est.. moyen.. beaucoup de cellules sont passées en mnuscules... mais dans un sacré paquet, l'information est remplacée par des "9" "
Je veux bien recevoir une copie de ton fichier si l'information n'est pas "top secret" . Prière de m'envoyer que la feuille concerné , je n'ai pas besoin de la totalité de l'application.