> Tous les forums > Forum Bureautique
 Problème base de donnéesSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
AL B
  Posté le 30/05/2006 @ 23:00 
Aller en bas de la page 
Nouvel astucien
Bonjour à tous voici mon cauchemar... Je gère un listing d'adresses sur Excel, que je dois exporter dans un autre logiciel. cet autre logiciel possède des champs limités à 32 caractères (espaces compris) certaines de mes adresses dans excel dépassent largement les 32. après avoir rassemblé toute ma puissance intellectuelle, je trouve la commande "convertir" une colonne, et "largeur fixe" que je fixe à 32. Mais je ne suis pas satisfait car bien sur cette action "coupe" les mots en plein milieu. EX c'est vraiment trop compliqué ex cel Donc voici ma demande comment faire pour couper une cellule à 32 caractères maximum, tout en ajustant en dessous de 32 pour garder des mots entier. D'avance un grand merci à tous ceux qui prendront la peine de me lire et de m'aider.
Publicité
galopin01
 Posté le 30/05/2006 à 23:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien
bonsoir et bienvenue sur PCA, copie cette macro dans un nouveau module (Module1)[code]Function SEP(Cellule As Range) Dim i%, z$ z = Cellule.Value z = Left(z, 32) i = InStrRev(z, " ") SEP = Left(z, i - 1) End Function[/code]Ensuite dans ta feuille de calcul tu utilises cette fonction comme une fonction Excel. Si tu veux tronquer la cellule A1 dans B1 tu écris : =SEP(A1) Ou encore, si tu chatouilles un peu le VBA tu peux aussi utiliser cette fonction pour retourner directement la valeur de la cellule à modifier :[code]Sub TEST() Dim o As Range For Each o In Selection o.Value = SEP(o) Next End Sub[/code] A+

Modifié par galopin01 le 30/05/2006 23:59
AL B
 Posté le 31/05/2006 à 22:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien
Bonsoir et merci a toi galopin01 Je viens de (tenter) de mettre en oeuvre tes conseils. j'ai copié la macro dans le module 1 Mais quand j'essaie de modifier une cellule (A1), voici le resultat #NOM? Erreur due à un nom non valide j'ai sans doute foiré qqchose.. A bientôt
dixit
 Posté le 31/05/2006 à 23:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
bonsoir, si le nombre d'adresses n'est pas trop important, n'est-il pas plus facile de faire les corrections manuellement pour être certain de conserver une adresse "lisible" (après avoir repéré automatiquement celles qui dépassent 32 caractères) ?. a+
galopin01
 Posté le 01/06/2006 à 04:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien
bonjour, Je pense que tu as du te tromper : tu n'as pas copié la fonction dans le Module1 mais dans un module de feuille. Je t'ai mis une petite démo [url="http://cjoint.com/?gbeMfftbBn"]ici[/url] A+
AL B
 Posté le 01/06/2006 à 21:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien
Bonsoir galopin01, Un grand merci pout ton efficacité... J'ai compris pourquoi ta macro ne fonctionnait pas chez moi, c'est ok maintenant!! Je me permet tout de même de te déranger encore un petit peu, car le résultat n'est pas optimum... désolé. Ta macro coupe a 32:c'est OK. Elle ne coupe pas au milieu d'un mot: c'est OK. Le problème c'est qu'elle fait disparaitre les informations au dela de 32... En fait je voudrais que ces informations "tournent" sur la colonne suivante. Un petit exemple Avec ta macro: COLONNE A-------------------------------------------COLONNE B La fonction SEP tronque une Ce que je voudrais: COLONNE A-------------------------------------------COLONNE B La fonction SEP tronque une-------------------------phrase (désolé pour la mise forme, il ne faut pas tenir compte des tirets) D'avance merçi. A+ ps - merçi à toi dixit, j'en ai vraiment trop(500)pour le faire manuellement (je sais, je suis pas courageux...) A+

Modifié par AL B le 01/06/2006 21:22
dixit
 Posté le 02/06/2006 à 00:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
bonsoir, le processus suivant serait-il acceptable ? : - ajouter une colonne dans le tableau excel - faire tourner une macro pour ramener à 32 caractères maxi en coupant à l'espace le plus à droite et placer le texte coupé dans la nouvelle colonne. a+
galopin01
 Posté le 02/06/2006 à 05:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien
bonjour, Modifier la macro Test comme suit :[code]Sub TEST() Dim o As Range For Each o In Selection s = o.Value t = SEP(o) o.Value = t o.Offset(0, 1).Value = Right(s, Len(s) - Len(t) - 1) Next End Sub[/code] A+
dixit
 Posté le 02/06/2006 à 13:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
bonjour, voici un fichier avec macro simpliste [url]http://cjoint.com/?gcnMKH0tzy[/url] (fichier également disponible sur mon site perso) a+
Publicité
AL B
 Posté le 02/06/2006 à 19:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien
Bonsoir dixit et galopin01, Je tiens tout d'abord à vous adresser un grand merçi pour votre aide. Vos macros ont résolu mon problème!!! Cependant en pratique j'utiliserais plus volontier celle de dixit.. je m'explique: La macro de galopin01 fonctionne parfaitement avec les cellules de plus de 32 caractères, mais malheuresement elle est aussi active avec les cellules de moins de 32. Elle fait tourner le dernier mot sur la droite dans la colonne suivante. C'est embêtant car je dois utiliser, dans la mesure du possible, au maximum la longueur de 32 caractères. Ce problème n'apparait pas avec celle de dixit. Néanmoins je vous remercie tout les deux au même niveau... c'est sympa de trouver des gens qui consacrent un peu de temps aux autres... Dernière question: pouvez-vous me conseiller un bouquin, site internet ou autre, pour apprendre la programmation sur Visual Basic Editor? ça m'interesse. Salut.
galopin01
 Posté le 02/06/2006 à 19:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien
bonsoir, je n'ai pas regardé la soluce de DIXIT qui est sans doute excellente mais j'ai quand même corrigé la mienne en fonction de tes observations.[code]Sub TEST() Dim o As Range For Each o In Selection s = o.Value t = SEP(o) o.Value = t On Error Resume Next o.Offset(0, 1).Value = Right(s, Len(s) - Len(t) - 1) Next End Sub Function SEP(Cellule As Range) Dim i%, z$ z = Cellule.Value z = Left(z, 32) i = InStrRev(z, " ") On Error Resume Next SEP = IIf(Len(z) > 32, Left(z, i - 1), z) End Function[/code] De 7 à 77 Euros... Tous les livres sur Excel et VBA sont [url="http://www.eyrolles.com/Informatique/Recherche/index.php?q=vba&themes=INF"]ici[/url] Il y a un Tuto pas mal [url="http://perso.orange.fr/jml85/Pages/cours_VBA.htm"]ici[/url] A+
AL B
 Posté le 02/06/2006 à 19:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien
Ok je vais m'y mettre et dans 10 ans je serais peut-être à votre niveau. A+
dixit
 Posté le 02/06/2006 à 21:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
bonsoir, mais pas du tout, avec un peu d'habitude et de l'entêtement dans certains cas, les progrès arrivent vite ; en plus, le forum est là comme source de renseignements et d'inspiration. Bon, évidemment le niveau vba de Galopin01, ce n'est pas pour demain, mais à force de s'inspirer, on en garde toujours un peu plus à chaque fois. Et puis, il y a la programmation à la "papa" que j'applique le plus souvent par manque de connaissances approfondies, alors courage ! Une suggestion : le processus d'enregistrement de macros d'Excel est très intéressant pour se rendre compte de certaines façons de faire. Livres : j'ai acheté récemment Excel 2003 programmation vba de DJ DAVID chez Eyrolles 18,05€ ; intéressant mais pas toujours très explicite donc difficile pour un quasi débutant à noter, sur le site de Eyrolles, possibilité de télécharger des extraits en PDF pour certains ouvrages. cordlt je complète : sur le site de Micro Application, possibilité de télécharger un fichier zip correspondant à leur livre sur le vba. a+

Modifié par dixit le 03/06/2006 09:42
galopin01
 Posté le 03/06/2006 à 08:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien
Bonjour, Une nouvelle [url="http://xlwiki.free.fr/wiki/wakka.php?wiki=PagesExcel"]référence[/url] émergente dont on peut parier qu'elle sera rapidement LA REFERENCE ABSOLUE sur Excel et VBA. A mettre d'urgence dans vos favoris ! A+

Modifié par galopin01 le 03/06/2006 08:09
AL B
 Posté le 04/06/2006 à 10:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien
Merçi pour les infos!!!
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
122,02 €Kit de 32 Go (2 x 16 Go) de mémoire DDR4 Crucial Ballistix 3200 MHz à 122,02 €
Valable jusqu'au 22 Septembre

Amazon fait une promotion sur le kit de 32 Go (2x16 Go) de mémoire DDR4 Crucial Ballistix 3200 MHz CL16 qui passe à 122,02 € livré gratuitement alors qu'on le trouve ailleurs à partir de 150 €.


> Voir l'offre
48,71 €Alimentation Seasonic B12 BC 750W Plus Bronze à 48,71 €
Valable jusqu'au 22 Septembre

Materiel.net propose actuellement l'alimentation Seasonic B12 BC-550 750W Plus Bronze à 48,71 €. On la trouve habituellement autour de 65 €. L'alimentation est garantie 5 ans. En plus d’être très efficaces, les unités B12 BC utilisent la conception à résonance LLC et le contrôle des ventilateurs intelligent et silencieux (S2FC).


> Voir l'offre
79,99 €Alimentation modulaire Corsair RM650 80+ Gold à 79,99 €
Valable jusqu'au 22 Septembre

Cdiscount propose actuellement l'alimentation modulaire Corsair RM650 à 79,99 €. Cette alimentation de 650W est certifiée 80+ Gold et est garantie 10 ans. Entièrement modulaire, vous pourrez brancher uniquement les câbles (fournis) dont vous avez besoin. On la trouve ailleurs à partir de 100 €. 


> Voir l'offre

Sujets relatifs
Problème de suppression de données VBA dans base
Works 9 Base de données problème de copier coller
Combinaison de 2 base de données comparatives
Format de base de données non reconnu (access 2003)
Convertir Bases de données Access 2003 en LibreOffice Base
reinitialiser clé primaire dans une base de données LIBRE OFFICE
Demande d'aide à la création d'une base de données
Quelle méthode choisir? (base de données)
Base de données / Masque de saisie
Utiliser EXCEL comme Base de données
Plus de sujets relatifs à Problème base de données
 > Tous les forums > Forum Bureautique