Bug sur recopie macro

Bonjour,

Dés que je copie une macro sur un fichier différent, comme celui-là, çà ne fonctionne plus.

J'ai aussi recopié la feuille et le bouton.

4divers.xlsm (101.19 Ko)

merci de votre aide.

Bonsoir à tous !

fronck, voici ton fichier en retour

2 erreurs

1- La feuille nommée pas le même nom (formats tel) & (format tels)

2-Le commandbutton était placé dans un module standard (ça ne fonctionne pas dans un module standard)

Bonne soirée !

2divers.xlsm (104.52 Ko)

Bonjour,

Il suffit de bien recopier

1)- ton bouton de la feuille ne contient pas de macro, la macro étant dans le module 1

2)- Le nom de ton onglet est "formats tel" alors que sur la macro c'est "format tels"

Bonjour à tous,

Tout a été dit, juste une autre façon de traiter les données :

Dans un module standard :

Sub RemplacerNumero(ByVal AireSource As Range, ByVal AireCible As Range)

Dim I As Integer, J As Integer
Dim Numero As String

     AireCible.ClearContents
     For I = 1 To AireSource.Count
         Numero = ""
         For J = Len(AireSource(I)) To 1 Step -1
             Select Case Mid(AireSource(I), J, 1)
                    Case 0 To 9
                       Numero = Mid(AireSource(I), J, 1) & Numero
             End Select

             If Len(Numero) = 10 Then
                If Mid(Numero, 1, 1) = "3" Then Numero = "0" & Mid(Numero, 2)
                Exit For
             End If
         Next J

       AireCible(I) = Format(Numero, "00 00 00 00 00")

     Next I

End Sub

Dans le module de l'onglet :

Private Sub CommandButton1_Click()

      RemplacerNumero Range("C2:C19"), Range("D2:D19")

End Sub

Bonjour Nordik_Nation et MI2,

Merci pour vos réponses.

Maintenant je sais à quoi servent les boutons Active X

Bonjour Eric,

Désolé j'avais pas vu ton post, et faute de tout comprendre, voici mes questions :

Sub RemplacerNumero(ByVal AireSource As Range, ByVal AireCible As Range)

For I = 1 To AireSource.Count

Pratique pour le comptage, mais pour la déclaration, c'est paramétré ou ? comment excel connait l'endroit ou ces zones se trouvent dans la feuille ?

For I = 1 To AireSource.Count
Numero = ""
For J = Len(AireSource(I)) To 1 Step -1
Select Case Mid(AireSource(I), J, 1)
Case 0 To 9
Numero = Mid(AireSource(I), J, 1) & Numero
End Select

Ce que je comprends là, c'est que le numéro est égal au dernier chiffre et "" (Numero = Mid(AireSource(I), J, 1) & Numero)

Le cas du 33 çà va.

Merci

Re,

Il serait plus simple pour toi de définir des zones nommées ou mieux des tableaux structurés, tu n'aurais pas besoin de te préoccuper de savoir où cela se trouve.

Sinon, le principe est partir de la fin du numéro de téléphone et de ne sélectionner que les chiffres. Au bout du dixième, tu regardes si c'est un 3, le cas échéant tu remplaces par 0.

Regarde l'exemple que j'ai modifié dans le fichier ci-joint :

Deux tableaux structurés nommés : TableAvant, TableApres. Dans ton événement, tu modifies ta ligne comme dans le code ci-dessous.

capture
Private Sub CommandButton1_Click()

    '  RemplacerNumero Range("C2:C19"), Range("D2:D19")
     RemplacerNumero Range("TableAvant[Avant macro]"), Range("TableApres[Après macro]")

End Sub

Au cas où tu ne souhaiterais pas t'encombrer d'une table provisoire :

Sub RemplacerNumeroV2(ByVal AireSource As Range)

Dim I As Integer, J As Integer
Dim Numero As String

     For I = 1 To AireSource.Count
         Numero = ""
         For J = Len(AireSource(I)) To 1 Step -1
             Select Case Mid(AireSource(I), J, 1)
                    Case 0 To 9
                       Numero = Mid(AireSource(I), J, 1) & Numero
             End Select

             If Len(Numero) = 10 Then
                If Mid(Numero, 1, 1) = "3" Then Numero = "0" & Mid(Numero, 2)
                Exit For
             End If
         Next J

       AireSource(I) = Format(Numero, "00 00 00 00 00")

     Next I

End Sub

Dans ce cas, tu modifies ton événement :

Private Sub CommandButton1_Click()

    '  RemplacerNumero Range("C2:C19"), Range("D2:D19")
    ' RemplacerNumero Range("TableAvant[Avant macro]"), Range("TableApres[Après macro]")
      RemplacerNumeroV2 Range("TableAvant[Avant macro]")

End Sub

Re,

Je connais les zones nommées des tableaux structurés, mais ton exemple n'avait pas de tableau structuré.

A quoi çà sert de reprendre les chiffres 1 à 1 depuis le dernier quand un format te fait le job tout seul.

Salut

A supprimer les blancs.

Rechercher des sujets similaires à "bug recopie macro"