Microsoft 365 FORMULE Excel VBA

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 !

kenny

XLDnaute Occasionnel
Bjr,

je voudrais appliquer cette formule en VBA qui me retourne les doublon en ouvrant une boite de dialogue et qui demande sur quelle colonne l'appliquer, cette formule s'applique à la cellule 2 de la colonne préciser.

j'ai une erreur de type :

Je n'arrive pas à solutionner.

Merci pour votre aide.
PS. : visiblement d'après le débogueur c'est cette partie du code qui pose problème :
Set rng = ActiveSheet.Range(colName & "2:" & colName & ActiveSheet.Cells(Rows.Count, colName).End(xlUp).Row)

Sub AddLeadingZeros()

' Demander à l'utilisateur sur quelle colonne appliquer la macro
Dim colName As String
colName = InputBox("Entrez le nom de la colonne :")

' Vérifier si le nom de colonne est valide
If colName = "" Then
MsgBox "Veuillez entrer un nom de colonne valide."
Exit Sub
End If

' Définir la plage de cellules
Dim rng As Range
Set rng = ActiveSheet.Range(colName & "2:" & colName & ActiveSheet.Cells(Rows.Count, colName).End(xlUp).Row)

' Parcourir chaque cellule de la plage
For Each cell In rng
' Vérifier si la cellule n'est pas vide et ne contient pas d'erreur
If Not IsError(cell.Value) And cell.Value <> "" Then
' Appliquer la formule avec la fonction REPT et NBCAR
cell.Value = WorksheetFunction.Rept("0", 9 - WorksheetFunction.Len(cell.Value)) & cell.Value
End If
Next cell

MsgBox "La macro a été appliquée avec succès à la colonne " & colName & "."

End Sub
 
Bonjour @kenny

PS. : visiblement d'après le débogueur c'est cette partie du code qui pose problème :
Set rng = ActiveSheet.Range(colName & "2:" & colName & ActiveSheet.Cells(Rows.Count, colName).End(xlUp).Row)

Manifestement on a pas le même débogueur !!
Ton problème vient de ta formule qui est fausse
' Appliquer la formule avec la fonction REPT et NBCAR
cell.Value = WorksheetFunction.Rept("0", 9 - WorksheetFunction.Len(cell.Value)) & cell.Value
Alors quelle est ta formule que tu souhaites (écris là en formule sans essayer de la convertir en VBA)

De plus ton code ne contrôle rien du tout car si je tape par exemple dans la boite de dialogue "qsdfgqdrg" et bien tu l'acceptes et plantage 3 lignes plus loin !!!

@Phil69970
 
Re

Je te propose plus simplement pour reprendre le code de @gbinforme

VB:
Sub AddLeadingZeros()
Dim MaZone As Range
Set MaZone = Range("A2:K" & UsedRange.Rows.Count) 'Lettre des colonnes à adapter éventuellement

MaZone.NumberFormat = "000000000"
Set MaZone = Nothing
End Sub

Plus besoin de demander à l'utilisateur une colonne toute la zone passe au format voulue et plus de contrôle à avoir.....

Merci de ta réponse

@Phil69970
 
Re

Je te propose plus simplement pour reprendre le code de @gbinforme

VB:
Sub AddLeadingZeros()
Dim MaZone As Range
Set MaZone = Range("A2:K" & UsedRange.Rows.Count) 'Lettre des colonnes à adapter éventuellement

MaZone.NumberFormat = "000000000"
Set MaZone = Nothing
End Sub

Plus besoin de demander à l'utilisateur une colonne toute la zone passe au format voulue et plus de contrôle à avoir.....

Merci de ta réponse

@Phil
[/QUOTE]
 
Bonjour Phil,

J'ai dû mal m'exprimer, cette macro doit être générale, vu que les colonnes qui doivent contenir les chiffres avec 9 caractères sont mobiles
D'où ma tentative de demander la colonne sur laquelle appliquer cette macro.
J'ai essayer ta proposer la plage de A2 à K cela ne répond pas à ma demande. Il s'agit d'appliquer la macro sur une colonne précise qui contiendrait des chiffres à 6 ou 7 caractères..

Je te remercie d'avance
 
Re

Je te propose cette version qui fonctionne quelque soit le nombre de chiffres
(Pour info chez moi un chiffre n'est pas une lettre)

sur une colonne précise qui contiendrait des chiffres à 6 ou 7 caractères..

VB:
Sub AddLeadingZeros()

' Demander à l'utilisateur sur quelle colonne appliquer la macro
Dim colName As String
colName = InputBox("Entrez le nom de la colonne :")

' Vérifier si le nom de colonne est valide
If colName = "" Then
    MsgBox "Veuillez entrer un nom de colonne valide."
    Exit Sub
End If

' Définir la plage de cellules
Dim Rng As Range
Set Rng = ActiveSheet.Range(colName & "2:" & colName & ActiveSheet.Cells(Rows.Count, colName).End(xlUp).Row)

Rng.NumberFormat = "000000000"

MsgBox "La macro a été appliquée avec succès à la colonne " & colName & "."

End Sub

Merci de ton retour

@Phil69970
 
D'où ma tentative de demander la colonne sur laquelle appliquer cette macro.
Il s'agit d'appliquer la macro sur une colonne précise qui contiendrait des chiffres à 6 ou 7 caractères..
Comme ceci il te suffit de faire un double clic sur une cellule de la colonne choisie
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Columns(Target.Column).NumberFormat = "000000000"
End Sub
Cette macro est à mettre dans la feuille concernée
 
Comme ceci il te suffit de faire un double clic sur une cellule de la colonne choisie
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Columns(Target.Column).NumberFormat = "000000000"
End Sub
Cette macro est à mettre dans la feuille concernée
Bonjour Phil, j'ai essayé ta macro, j'ai un bug sur la partie du code :
Set Rng = ActiveSheet.Range(colName & "2:" & colName & ActiveSheet.Cells(Rows.Count, colName).End(xlUp).Row)

Je joins un fichier test,

gbinforme idem cela ne fonctionne pas bizarre tout cela​

 

Pièces jointes

Re

@kenny
Tu as mis aucune macro dans le fichier test que tu as fourni donc sans macro cela ne peut pas fonctionner !!!😵

J'ai mis un bouton et rajouter une dizaine de colonne (pour pouvoir choisir une colonne)
J'ai juste copié le code que j'ai fourni au post #9 pour lancer la macro et tu vas rire cela fonctionne sur mon PC comme sur tous les PC du monde et surement aussi sur mac mais vu que je n'ai pas de Mac j'ai pas pu faire d'essai.

@Phil69970
 

Pièces jointes

Re

@kenny
Tu as mis aucune macro dans le fichier test que tu as fourni donc sans macro cela ne peut pas fonctionner !!!😵

J'ai mis un bouton et rajouter une dizaine de colonne (pour pouvoir choisir une colonne)
J'ai juste copié le code que j'ai fourni au post #9 pour lancer la macro et tu vas rire cela fonctionne sur mon PC comme sur tous les PC du monde et surement aussi sur mac mais vu que je n'ai pas de Mac j'ai pas pu faire d'essai.

@Phil69970
Phil merci mais je comprends pas avec moi ca fonctionne pas
cela me retourne cette erreur.
1681065185826.png


2)
1681065323505.png

3)
1681065364759.png

c'est quoi cette incompatibilité de type qui me pourrie la vie ;o))
 
- 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

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
230
Réponses
4
Affichages
143
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
74
Réponses
4
Affichages
358
  • Question Question
Réponses
6
Affichages
629
Réponses
21
Affichages
867
Retour