Bonjour à tous
Pratiquant le VBA depuis peut, Je sollicite votre aide pour la correction d’une macro pour Excel 2003
Voici ce que je désire effectuer :
J’ai des tableaux où j’importe des données avec des colonnes de chiffres dans ceux-ci les formats sont parfois en « Texte » or, pour additionner le tout, il me les faut tous au format « nombres »
Si je passe par « Collage spécial en multipliant par 1, ça fonctionne » mais je désire passer par une macro, et là, ça ne fonctionne qu’à moitié ???? (Même si j’enregistre la manip qui marche avec l’enregistreur de macro) je ne comprends pas pourquoi.
Auriez-vous une solution à me proposer pour faire fonctionner ma macro ?
Example avec la colonne K, si on additionne K19 et K20, le résultat est erroné : K20 n’est pas comptabilisé.
Code avec enregistreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub Macro1() ' ' Macro1 Macro ' Macro enregistrée le 10/01/2014 ' ' Range("B2").Select Selection.Copy Range("K2:K33").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _ SkipBlanks:=False, Transpose:=False Range("B2").Select End Sub
Code fonctionnant à moitié (Même problèmes qu’avec le code enregistré, aux mêmes cellules
(K9, K17, K20, K30)
De plus, je désirerais que si une cellule de la colonne à convertir est vide, qu’après convertion, elle soit toujours vide (qu’il n’y ait pas « 0 »)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 Option Explicit Sub Multiplication_par_x() Dim y As Integer 'Valeur de multiplication Dim x As Range 'cellule temporaire pour variable de multiplication Dim z As Range 'Selection à multiplier Dim ongl As String 'Feuille Dim col As String 'Colonne Dim derli As Integer 'Dernière ligne de la colonne On Error GoTo erreurfeuille ongl = InputBox("Saisir le nom de la feuille de travail.", _ Title:="Onglet à traiter", Default:="1") Sheets(ongl).Select col = InputBox("Saisir la colonne à modifier.", _ Title:="Colonne à convertir", Default:="K") derli = Cells(Rows.Count, col).End(xlUp).Row Set z = Range(col & "2 :" & col & derli) 'Set z = Selection z.NumberFormat = "0.00" y = Application.InputBox("Entrer le chiffre multiplicateur:", _ Title:="Selection multiplier", Default:=1, Type:=1) Set x = Range("A65536").End(xlUp).Offset(1) If y = 0 Then Exit Sub If x <> "" Then 'ajouter : si cellule vide : garder la cellule vide (pas 0) 'ajouter : effacement des caractères invisibles et remplacement des points par des virgules Exit Sub If y <> "" Then y = "" Else: x.Value = y x.Copy z.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False End If x.ClearContents 'efface la cellule temporaire en fin de colonne A Exit Sub erreurfeuille: MsgBox ("Ce nom n'existe pas !"), vbCritical End Sub
Question subsidiaire pour les pros d’Excel :
Je cherche un moyen de convertir une partie du texte (surlignée à la souris) d’une cellule, de minuscule à majuscule (ou l’inverse)
example : DISTRIBUTEUR NOGREN V62 - G3/8 5/3 CF 24VCC V62C611A-A313J
deviendrait : Distributeur norgren V62 G3/8 - 5/3 CF 24VCC V62C611A-A313J
Je n’ai rien trouvé sur le web : est-ce réalisable par macro ?
Merci beaucoup par avance.
Partager