[VBA/EXCEL] Passage de 2003 à 2007 problèmatique

Signaler
Messages postés
15
Date d'inscription
lundi 17 décembre 2007
Statut
Membre
Dernière intervention
25 mars 2010
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
J'avais un fichier excel qui avait un code VBA simple pour mettre en majuscule ou pas qui fonctionnait très bien sous Excel 2003 mais qui ne fonctionne plus du tout sous 2007. Le code est toujours là, mais ça ne fait pas ce que ça devrait faire.
Help!!

Merci :)

7 réponses

Messages postés
15
Date d'inscription
lundi 17 décembre 2007
Statut
Membre
Dernière intervention
25 mars 2010

HELP!!! s'il vous plait
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
Bonjour à toi aussi,

J'avais un fichier excel ...


donc ce n'est pas du VB6 !

hmmm... non je vois pas désolé... ma boule de cristal a peut être un problème

Sérieusement sans le code comment veux tu que l'on te réponde ?

A+
Messages postés
15
Date d'inscription
lundi 17 décembre 2007
Statut
Membre
Dernière intervention
25 mars 2010

Désolé, je ne suis super au point entre VBA, VB6. Tout ce que je sais, c'est que mon fichier excel marchait très bien avec ce code sous excel 2003, et que sous excel 2007, ça ne marche pas (c'est juste censé mettre automatiquement en majuscule les données dans certaines colonnes).

Voici le code:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub '<-- pour éviter que ça coince si on sélectionne plusieurs cellules
If Target.Column = 15 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 3 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 4 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 5 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 6 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 7 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 8 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 9 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 10 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 11 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 12 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 13 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 27 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 28 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 32 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 33 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 36 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 37 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 39 Then
Target.Value = StrConv(Target.Value, 1)
ElseIf Target.Column = 14 Then
Target.Value = StrConv(Target.Value, 3)
End If
End Sub

Merci pour toute aide apportée :)
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
re,

ben le gas qui fait ça il était pas au point non plus

essai ça :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub '<-- pour éviter que ça coince si on sélectionne plusieurs cellules
    Select Case Target.Column
        Case 3 To 15, 27, 28, 32, 33, 36, 37, 39
            Target.Value = UCase$(Target.Value)
    End Select
End Sub


A+
Messages postés
15
Date d'inscription
lundi 17 décembre 2007
Statut
Membre
Dernière intervention
25 mars 2010

Merci, mais la colonne 14 est différente, on veut juste que la première soit en majuscule, le reste en minuscule: c'est pour un prénom (type "Corinne")
C'est possible aussi?
Messages postés
15
Date d'inscription
lundi 17 décembre 2007
Statut
Membre
Dernière intervention
25 mars 2010

Et puis le code n'est pas le problème. Il fonctionnait très bien sous Excel 2003. Si je saisissait des données dans les colonnes 3 à 13 par exemples, les lettres se mettaient automatiquement en majuscules. Idem pour les autres colonnes, selon le code.
Un fois installé Excel 2007, j'ai ouvert mon fichier comme d'hab, j'ai saisit mes données comme d'hab, et le mot ne s'est jamais mis en majuscule. C'est ça le problème.
Le code est toujours là, j'ai vérifié. Mais le mot reste en minuscule, si saisit en minuscule.
Je ne sais pas si ça vous aide à y voir plus clair?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Le code que t'a donné bigfish_le_vrai est le bon, poiur ce qui est de la méthode.
A toi de remplacer " to 15 par 3 to 13 !
A toi également de remplacer :
Target.Value = UCase$(Target.Value)

par
Target.Value =strconv(Target.Value, vbproperCase)

La fonction strconv et la constante vbpropercase existent et fonctionnent sous VBNA/Excel 2007 (je viens de m'en assurer) !

J'en conclus que tu as entre-temps commis la maladresse d'attribuer le nom de strconv à quelque-chose d'autre ===>> VBA s'y perd alors !
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est