Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Macro VBA Excel (Doublon,SansAccents,Maj,Min,Nompropre,Espaces superflus)

Virginie17d

XLDnaute Occasionnel
Messieurs,

Après avoir vu le dernier XLAM de Thierry, voici mes remarques :

Maj/Min/Nompropre : OK
Caractères : OK
Login : Génère 2/3 lignes supplémentaire avec que le /SOCIETE et #N/A, cela va générer des erreurs lors du chargement.
Trim Espaces : OK
Téléphone : OK même magique

Je me permet de vous joindre les fichiers à jours car le template de test n'est pas sur le même nombre de colonne et j'ai ajouté des Macros et Icons

Je dois encore revoir la génération de mot de passe, il fonctionne plus je sais pas ce que j'ai fait.

Mais c'est juste de l'optim, il convient parfaitement à mon utilisation, un grand merci
 

Pièces jointes

  • XLD_Virginie17d_03052020_V02.zip
    60.8 KB · Affichages: 9

_Thierry

XLDnaute Barbatruc
Repose en paix
Re patrick, vite fait pour :

et dans le mien le max c'est le end (xlup)
Le mien aussi je redimensionne en cas de colonne entière sélectionnée (message plus haut)
:
Set TargetRange = Range(Cells(2, Selection.Columns.column), Cells(Rows.Count, Selection.Columns.column).End(xlUp))


c'est msgbox selection.entirecolumn
apres en array faut convertir je crois
Non j'ai une une incompatibilité de type...

et le nom du tab et group a changé
Oui tu parle du CustomUI, oui je ne svaispas ce que c'était "Template" et "TRAVELDOO" et puis c'est pour Virginie , non ? LoL

Et la meilleure pour la fin !!
myarray=Evaluate("COLUMN(" & Selection.EntireColumn.Address & ")")
MsgBox Join(myarray, ",")
et voila un truc a garder sous le coude

Au top Patrick, je peux traiter du multi-colonnes grace à toi !
VB:
MyColumnsArray = Evaluate("COLUMN(" & Selection.EntireColumn.Address & ")")
For c = 1 To UBound(MyColumnsArray, 1)
MyLastColumn = MyColumnsArray(c)
Next c

MsgBox MyLastColumn
    If Selection.Count >= Rows.Count Then
          Set TargetRange = Range(Cells(2, Selection.Columns.column), Cells(Rows.Count, MyLastColumn).End(xlUp))
    End If

Voilà pour le moment !!!
Excusé je n'ai pas lu les derniers derniers message, mais il y a aura une nouvelle xlam v02
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re coucou Virgine,

Login : Génère 2/3 lignes supplémentaire avec que le /SOCIETE et #N/A, cela va générer des erreurs lors du chargement.

Oui j'avais remarqué, c'est dû à : n = ActiveSheet.UsedRange.Rows.Count et dans le fichier d'origine nous avons un N/A qui se balade en C91 ... Donc l'algo de Patrick descend jusque là...
En fait ce "Login" c'est "l'intrus" de la XLAM je n'y ai pas trop porté cas

Ravi que Teléphone soit devenu Magique !!! Attends la v02

Pour notre ami @Stapple1600, c'est vrai qu'on s'écarte un peu en on emploie la grosse artillerie dans ce Fil en s'égarant un peu, mais Virginie à l'air pleine de potentiel VBA et de bonne volonté et en prime elle est sympa !

@Plus tard !

@+Thierry
 

patricktoulon

XLDnaute Barbatruc
re
VB:
MyColumnsArray = Evaluate("COLUMN(" & Selection.EntireColumn.Address & ")")
For c = 1 To UBound(MyColumnsArray, 1)
MyLastColumn = MyColumnsArray(c)
Next c

MsgBox MyLastColumn

allons allons Thierry on fatigue

VB:
MyColumnsArray = Evaluate("COLUMN(" & Selection.EntireColumn.Address & ")")

MyLastColumn=MyColumnsArray(ubound(MyColumnsArray))

tu es sur de ceci Thierry moi moins
:
Set TargetRange = Range(Cells(2, Selection.Columns.column), Cells(Rows.Count, Selection.Columns.column).End(xlUp))

et c'est quoi ca "Selection.Columns.column"
Selection.Column
fait la même chose
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
et encore une

VB:
 Set TargetRange = Range(Cells(2, Selection.Columns.column), Cells(Rows.Count, MyLastColumn).End(xlUp))
grosse erreur de procéder comme ça quand on travaille sur des tableaux

ne jamais prendre le end(xlup) de la dernière colonne

d'autant plus qu'en général c'est plutôt l'inverse les première colonnes remplies sur une lignes les dernières parfois vides
ca aussi a méditer
il faudra revoir plein de petit trucs qui ont été négligé

@Virginie17d
la génération de mdp dans les grandes lignes ?
  1. combien de caractères ????
  2. combien de lettres , de numeriques , de caracteres particuliers ????
  3. la destination ????
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Patrick

Pour la première partie, oui c'est brut de décorticage de ton génial Evaluate. C'est clair je fatique, en plus travaillant directement sur la XLA à chaque fois que je ferme, vu qu'il n'y a pas d'alerte de sauvetage, j'ai tout perdu, LoL !!! Faut tout le temps "mitrailler" la disquette depuis VBE sinon, ben hop tout parti !!! donc je m'y suis repris à 10 fois pour faire cette cochonnerie !

Pour la seconde partie, je n'écris plus ceci dans mon post #167, mais ceci :
Set TargetRange = Range(Cells(2, Selection.Columns.column), Cells(Rows.Count, MyLastColumn).End(xlUp))
La dimension de fin de Range est prise sur X Columns

Pour la difference entre
et c'est quoi ca "Selection.Columns.column"
Selection.Column
fait la même chose

Prends un classur vierge, selectionnne X columns...




fais la même chose avec le .Column en plus :


Et j'ai donc ma colonne de départ ... Pour dimensionner ma zone de travail...

Grace à toi, j'avais le début et maintenant j'ai la fin pour dimensionner cette zone, encore merci

@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Patrick
C'est pour le Entire-Multi-Colonnes et éviter que ca mouline jusqu'à la Saint GlinGlin tout ça ........
Avant il n'y avait aucun garde-fou...


Il y a toujours moyen d'améliorer évidemment, si on a toujours quelque chose en Colonne "A" c'est sur que c'est plus simple...

Mais comme je dis j'ai la "Culture XLA" ca doit s'adapter à tout classeur, probablement en rester à la v01, c'est plus simple puisque elle est bridée pour ne traiter qu'une seule colonne entière à la fois... A vouloir trop en faire maintenant avec du Entire-Multi-Colonnes on s'expose à des effets de bord...

Mais on moins on apprends des trucs ! N'est-ce pas Patrick et Virginie !
@+Thierry

EDIT Après reflexion, dans le cas du Tableau de Virgine, si toutes les colonnes n'ont pas les mêmes longueurs, à mon avis c'est qu'il manque des data aussi, non ?
 

patricktoulon

XLDnaute Barbatruc
et non thierry dans ton code
la dimension rows se fait par Cells(Rows.Count, MyLastColumn).End(xlUp)
en l’occurrence ici la dernière ligne de LA DERNIERE COLONNES et non LES COLONNES

et c'est
msgbox selection.column.address ' SANS LE (S)
qui donne la premiere

je crois que dans le contexte la solution la plus simple serait le usedrange.speciallcells(xllastcell).row
sinon il y a des risque d’être plus haut que la fin

ps moi aussi j'ai pleurer misère avec xlam
ASTUCE DU JOUR BONJOUR

pour m'en sortir en restant appuyé sur les modules je les glisse dans le xlsx dans vbe
et je ferme le xlam et quand j'ai fini de coder je sauve le xlsx en xlam en écrasant le xlam
RESTE plus qu'a remettre le ruban

 

Virginie17d

XLDnaute Occasionnel
Ah zuttt !!! Normal dans mon template d'origine le sheets est nommé "Profile", et comme je change de fichier j'ai oublié de modifier cet élément, bien vu !!!

Dans le principe
1-Je veux continuer à avoir le MsgBox qui demande le nombre de caractères.
2- Il n'y a pas d'impératif du nombre de Lettre maj/min, Numéro et ou caractères spéciaux, c'est comme j'ai envie.
3- La destination est dans la colonne 4 "D"
 

Virginie17d

XLDnaute Occasionnel
LEs valeurs Nom prénom et Email sont obligatoire, les colonnes Action et Type également, toutes les autres sont optionnels
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Patrick
et non thierry dans ton code
la dimension rows se fait par Cells(Rows.Count, MyLastColumn).End(xlUp)
en l’occurrence ici la dernière ligne de LA DERNIERE COLONNES et non LES COLONNES

Oui pour ceci nous sommes d'accord... C'est bien mon intention....
Maintenant entre temps Virginie nous explique que certaines infos sont optionelles, donc oui je vais me cadrer sur la Colonne "A" mais je vais en faire une option en fait avec un Setup de la XLA... Héhéhé LoL...

C'est fou ce que ce fil est prenant, désolé pour les autres demandeurs d'XLD, ils sont un peu délaissés ce soir !
Bien à vous
@+Thierry
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…