VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la même op

mouaadiib

XLDnaute Nouveau
Bonjour tout le monde,

Alors petite question VBA.
J'ai cette formule qui marche pour cellule que je selectionne mais je souhaiterai la modifié pour une colonne entière.

Sub Niveau1()
ActiveCell = Right(ActiveCell, Len(ActiveCell) - 5)
End Sub

Je sais que ma première valeur commence à B2 mais par contre je ne sais pas si ma prochaine valeur se terminera à B50, B210 B 1000 etc....cela peut varier en fonction des données.

Je souhaiterai faire donc la même opération mais sur chaque cellule de la colonne B tant qu'il y a des valeurs.

J'espère avoir été clair.

Encore merci pour votre futur aide.

Cdt,
mouaadiib
 
G

Guest

Guest
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Bonjour,

Code:
Sub Niveau1()
Dim tmp As Variant, i As Integer
    tmp = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(xlUp)).Value
    For i = 1 To UBound(tmp)
        tmp(i, 1) = Right(tmp(i, 1), Len(tmp(i, 1)) - 8)
    Next
    ActiveCell.Resize(UBound(tmp)).Value = tmp
End Sub

A+
 

Efgé

XLDnaute Barbatruc
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Bonjour mouaadiib

Essai comme ceci:

VB:
Sub Niveau()
Dim C As Range
With Sheets("Feuil1") ' a adapter
    For Each C In .Range("B2:B" & .Cells(.Rows.Count, 1).End(xlUp).Row)
        C.Value = Right(C.Value, Len(C.Value) - 5)
    Next C
End With
End Sub

Cordialement

EDIt Bonjour Hasco :) , je vois que tu as mis les petits plats dans les grands :D
 

mouaadiib

XLDnaute Nouveau
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Merci à vous deux.
Ca fonctionne parfaitement que ça soit la macro fait par Efgé ou par hasco.
Thanks a lot.

ARFFF.
EDIT:

J'ai essayé avec une taille de caractère plus grand et j'ai une erreur sur le débogage:
C.Value = Right(C.Value, Len(C.Value) - 13)

Je pense que cela vient du nombre de caractère non ?
Erreur d'éxecution : 5
 
Dernière édition:

mouaadiib

XLDnaute Nouveau
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Ok,

Il faut peut-être que j'intègre une fonction avant avec le nbcar:
Genre:
Si nbcar de la cellule >= 13 alors on fait la fonction
sinon on mets le chiffre 0.

Qu'en pensez-vous.

Ou je fais une fonction avant de faire la macro proposée en supprimant toutes cellules ou c'est inférieur à 13
 

Efgé

XLDnaute Barbatruc
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Re
Essai comme ceci:
VB:
Sub Niveau()
Dim C As Range
With Sheets("Feuil1") ' a adapter
    For Each C In .Range("B2:B" & .Cells(.Rows.Count, 2).End(xlUp).Row)
        C.Value = Right(C.Value, Len(C.Value) - IIf(Len(C.Value) > 13, 13, 0))
    Next C
End With
End Sub

A noter, il y avait une bourde dans la proposition il faut utiliser 2 dans .Cells(.Rows.Count, 2)

Cordialement
 
G

Guest

Guest
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Re bonjour,

Ce qui donnerait pour la macro proposée en #2:

Code:
Sub Niveau1()
 Dim tmp As Variant, i As Integer
     tmp = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(xlUp)).Value
     For i = 1 To UBound(tmp)
        tmp(i, 1) = Right(tmp(i, 1), Len(tmp(i, 1)) + (13 * (Len(tmp(i, 1)) >= 13)))
     Next
     ActiveCell.Resize(UBound(tmp)).Value = tmp
 End Sub

+ (13 * (Len(tmp(i, 1)) >= 13)) donnera soit +(-13) soit +0

A+
 

mouaadiib

XLDnaute Nouveau
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

il y a peut-être une erreur dans la boucle.
Pour être plus clair voici le fichier ci-joint.
Comme vous pouvez le voir vous avez l'arborescence (qui vient d'une commande tree de dos) et que j'essaye d'exploiter ensuite via Excel.
Le Niveau 1 -> caractère 5
Le Niveau 2 -> caractère jusqu'à 8

Et enfin le Niveau 3 fameux niveaux jusqu'à 13.

j'ai essayé de bidouiller ta fonction vba mais sans succès.
 

Pièces jointes

Efgé

XLDnaute Barbatruc
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Re
Ton niveau 3 est en colonne D...
VB:
Sub Niveau3()
Dim C As Range
With Sheets("Feuil1") ' a adapter
   For Each C In .Range("D2:D" & .Cells(.Rows.Count, 4).End(xlUp).Row)
        If Len(C.Value) > 13 Then C.Value = Right(C.Value, Len(C.Value) - 13)
    Next C
End With
End Sub
Cordialement
 
G

Guest

Guest
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Re,

A partir de ton fichier difficile de savoir ce que tu veux obtenir comme résultat.
Rajoute une feuille avec le résultat souhaité (fait manuellement)

A+
 

mouaadiib

XLDnaute Nouveau
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Alors merci cela marche niquel...le boulet j'avais pas vu que c'était en dur les colonnes.

Sinon Hasco.
Je te joins le fichier pour que tu es une idée (voir la feuille donnée_souhaitée) de ce que je veux mais avec ce que j'ai now je vais pouvoir un peu mieux structuer et avancer.

En tout cas merci à vous deux.
 

Pièces jointes

mouaadiib

XLDnaute Nouveau
Re : VBA - Request de formule pour sélect. chaque cellule d'un col. pour faire la mê

Merci hasco.
Ça simplifie ma tache et c'est exactement ce à quoi je voulais arriver.

Malgré tes commentaires tu pourrais m'expliquer en mp dès que tu as du temps.
Merci en tout cas à vous deux
 

Discussions similaires

Statistiques des forums

Discussions
315 297
Messages
2 118 168
Membres
113 443
dernier inscrit
renotton