Macro toute simple mais pb de format

  • Initiateur de la discussion Initiateur de la discussion mmalzert
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mmalzert

XLDnaute Occasionnel
Bonjour,

Dans le fichier que je joins, j'ai réalisé une macro à l'aide de l'enregisteur de macro.
J'ai donc tout fait à la main.
Tout se déroule bien jusqu'à ce que je lui demande de me remplacer les "." par des ",". En colonne J, avec la macro, les nombres se retrouvent avec des espaces devant alors que ce n'est pas le cas quand je le fais en manuel avec ctrl f, alt e, remplacer "." par ",".

Edit : Et apparemment les deux derrnières lignes ne sont pas prises en compte.

Merci de votre aide.
 

Pièces jointes

Dernière édition:
Re : Macro toute simple mais pb de format

Bonjour mmalzert,

Lorsque tu enregistres ta macro, après avoir choisi Délimité et coché Autre avec |, il faut aussi que tu coches Espace.

Ensuite le Remplacer . par , fonctionne bien.

Tu peux d'ailleurs l'inclure dans ta macro.

Bon après-midi.

Jean-Pierre
 
Re : Macro toute simple mais pb de format

Bonjour jeanpierre et merci pour ta réponse.

Le remplacer "." par "," fonctionne effectivement quand je lance la macro mais par contre, ça me rajoute des espaces devant les nombres en colonne J par exemple alors que ce n'est pas le cas lorsque je le fais à la main avec un ctrl f remplacer par. Ca fait que ca ne me reconnait pas ces cellules comme contenant du nombre (même en changeant le format). Je ne comprends pas.
Pour les deux lignes qui déconnent, c'est pas bien grave car en refaisant une extraction, ca ne le faisait plus.
 
Re : Macro toute simple mais pb de format

Je viens de réintégrer à la macro tes indications et j'obtiens le code suivant :
Code:
Sub convertir_baan()
'
' convertir_baan Macro
' Macro enregistrée le 06/01/2010 par U00B1111
'
' Touche de raccourci du clavier: Ctrl+m
''
        Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Tab:=True, Semicolon _
        :=False, Comma:=False, Space:=True, Other:=True, OtherChar:="|", _
        FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array _
        (6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), _
        Array(13, 1))
    Cells.Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
    Range("A1").Select
End Sub




Je sais pas si tout ceci est utile mais ca fonctionne effectivement pour mes nombres. Par contre, j'ai l'impression que ça me décale mes colonnes.
Et c'est quoi les "Array" ?
 
Dernière édition:
Re : Macro toute simple mais pb de format

Re,

Oui, le fait est, les colonnes sont décalées, cela provient du fait que les lignes, à partir de la 12, ont un espace avant la valeur ce qui crée une colonne à part.

Peut-être supprimer toutes les lignes jusqu'à la 11 inclus, quitte à remettre les titres ensuite.

Dans ce cas, dans l'étape 3/3 tu coches colonne non distribuée pour la première.
 
Re : Macro toute simple mais pb de format

Salut

en commençant par supprimer les espaces du début,
Code:
Sub convertir_baan()
  Range("A1:A" & [A500].End(xlUp).Row).Select
 [COLOR=SeaGreen] 'supprime les premiers espaces[/COLOR]
  [B]For Each cell In Selection: cell.Value = LTrim(cell): Next[/B]
  [COLOR=SeaGreen]'sépare[/COLOR]
  Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    ConsecutiveDelimiter:=True, Tab:=True, Space:=True, Other:=True, OtherChar:="|", _
    FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _
    Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1))
  [COLOR=SeaGreen]'remplace[/COLOR]
  Cells.Select
  Selection.Replace What:=".", Replacement:=","
  Range("A1").Select
End Sub
 
Re : Macro toute simple mais pb de format

Merci Fo_rum de te joindre au fil. Merci à jeanpierre pour son F1. Je n'avais pas pensé que ça pouvait le faire dans VBA.

Pour ce qui est du code de Fo_rum, ca fait quelque chose de plutôt pas mal qui pourra si besoin me permettre de faire des recherchev ou des sommeprod puisque tout est bien séparé.
Par contre, j'ai toujours le même problème avec ces nombres.
Je vous ai remis mon fichier source en entier cette fois sans rien modifier si ce n'est quelques noms. J'ai ajouté le bouton histoire de rendre plus simple tout ça.
En fait, ce serait top si toutes mes cellules nombres étaient bien du nombre. Car en faisant une selection multiple, le calcul ne se fait pas. Peut être intégrer un * 1 dans la macro quand celulle non vide ?


J'ai, avec l'enregisteur, fait ceci qui fonctionne, pour tester sur une zone.
Code:
Range("O1").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("O1").Select
    Selection.Copy
    Range("E18:I23").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlMultiply, SkipBlanks _
        :=False, Transpose:=False

Je voudrais le faire sur toute la feuille, mais que pour les celulles <> "". Je pense qu'il doit aussi être possible de noter le "1" quelque part dans la macro. Car si la celulle qui le contient est pleine, ça risque de poser problème.

Merci de vos réponses.
 
Dernière édition:
Re : Macro toute simple mais pb de format

Bon donc j'ai compilé les 2 macros proposées par Fo_rum et cela fonctionne maintenant comme je le voulais. J'ai testé sur deux extractions différentes et c'est ok.
Je mets le code au cas ou.

Code:
Sub convertir_baan()
  Application.ScreenUpdating = False
  derli = [A65000].End(xlUp).Row
  Range("A1:A" & derli).Select
  'supprime les premiers espaces
  For Each cell In Selection: cell.Value = LTrim(cell): Next
  Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    ConsecutiveDelimiter:=True, Tab:=True, Space:=False, Other:=True, OtherChar:="|", _
    FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _
    Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1))
  'remplace texte numérique par nombre
  For Each cel In Range("A1:M" & derli)
    cel.Value = Replace(cel, ".", ",")
    If IsNumeric(cel) And cel <> "" Then cel.Value = CDbl(cel)
  Next
  'remplace résultat par formule
  For Each cel In Range("A1:A" & derli)
    If cel = "Total:" Then
      For col = 2 To 4
        Cells(cel.Row, col).FormulaR1C1 = "=SUM(R[-31]C:R[-2]C)"
      Next
      Cells(cel.Row, 5) = ""
      Cells(cel.Row, 11).FormulaR1C1 = "=SUM(R[-31]C:R[-2]C)"
    End If
  Next
  Range("A1").Select
Dim R As Range
Dim var
Dim i&
Dim j&
Set R = ActiveSheet.UsedRange
var = R
For i& = 1 To UBound(var, 1)
  For j& = 1 To UBound(var, 2)
    var(i&, j&) = Trim(var(i&, j&))
  Next j&
Next i&
R = var
End Sub

Bon finalement j'ai rencontré quelques soucis.
Du coup, j'ai fait la macro suivante qui pour le moment marche correctement.

Code:
Sub convertir_baan()

'
' convertir_baan Macro
' Macro enregistrée le 08/01/2010 par U00B1111
'
'   Remplace les points par les virgules
Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False

'   Converti
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1))
Range("A1").Select

'   Supprime les espaces
Dim R As Range
Dim var
Dim i&
Dim j&
Set R = ActiveSheet.UsedRange
var = R
For i& = 1 To UBound(var, 1)
  For j& = 1 To UBound(var, 2)
    var(i&, j&) = Trim(var(i&, j&))
  Next j&
Next i&
R = var


End Sub
Merci encore.
A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
240
D
Réponses
4
Affichages
434
DidPouAxi
D
P
Réponses
1
Affichages
959
H
  • Question Question
Réponses
4
Affichages
1 K
HaggarduNord
H
D
Réponses
0
Affichages
573
desquiens.gabriel@hotmail
D
M
Réponses
6
Affichages
1 K
maxime45
M
Retour