Besoin d'aide en VBA Excel Concatener + déplacement de donnée - VB/VBA/VBS - Programmation
Marsh Posté le 04-10-2017 à 17:08:53
Bonjour,
Pas beaucoup de réponses....
je pense avoir donnée trop de détail, désolé de vous avoir fais peur.....
je m'en suis sortie en faisant des copier/coller sur internet.
quelques seconde d’exécution, il est probable que ça ne soit pas optimisé.
si vous avez des conseilles n'hésitez pas.
Code :
|
le projet a beaucoup évolué et je doit maintenant créer un petit csv pour alimenter un logiciel.
beaucoup de choses à apprendre et des belles heure à me tirer les cheveux.
Petite question,
je voudrais déffinir une plage en fonction d'une ligne qui s'incrémente
et décaller cette plage à chaques incrémentation
Code :
|
quelqu'un saurait corriger ma seconde ligne????
Merci d'avance ;-)
Marsh Posté le 04-10-2017 à 18:34:16
Salut,
Je pense que cela doit plutôt être :
Code :
|
Marsh Posté le 06-10-2017 à 09:40:31
Merci, ça fonctionne parfaitement.
je ne comprend pas, j'ai aussi le petit bout de code suivant:
Code :
|
Qui me renvoi un défaut: "Erreur '1004' : la méthode range de l'objet _global a échoué......
Pourtant je l'ai utilisé plusieurs fois, y compris dans mon premier code posté et là je ne trouve pas le problème.....
PS : "Tableau" et "ES" sont les noms de mes feuilles. Elles sont présentes sur le même classeur.
Marsh Posté le 06-10-2017 à 10:28:39
valerypetit a écrit : Merci, ça fonctionne parfaitement.
|
Salut !
Peut-être est-ce lié au fait que ta variable i est définie en tant que "long", alors que vba attend une variable "range".
Marsh Posté le 06-10-2017 à 10:38:49
le code plus haut fonctionne et "j" est définie en tant que "long"......
mais j'ai effectivement: Dim Ligne_Lect As Long, Ligne_Ecrit As Long
j'ai passé le Dim en commentaire pour que la variable devienne de type "Variant" mais ça ne change rien....
Voici le code complet.
Code :
|
Marsh Posté le 06-10-2017 à 13:31:22
J'ai fait plusieurs essais, apparemment c'est la syntaxe de "Range" qui est capricieuse.
Cette ligne-ci semble fonctionner par intermittence, il semble qu'Excel l'admette, mais pas tout le temps:
Code :
|
Le "bon" code est celui-ci, comme indiqué par Takama13:
Code :
|
J'ai testé, j'ai bien l'erreur avec la première syntaxe et ça fonctionne avec la seconde. Ecrire le nom de la feuille dans le "Range" ne serait donc pas correct.
Marsh Posté le 06-10-2017 à 13:56:55
Super, ça fonctionne.
Du coup je pense que je vais devoir refaire mes autres modules pour éviter d'avoir des aléas à l'utilisation ;-)
merci pour ton aide
Marsh Posté le 09-10-2017 à 17:49:43
Bonjour,
aucun caprice mais juste le B-A-BA d'Excel !
Quand il y a un espace il faut encadrer entre apostrophes, constatable dans une simple formule de feuille de calculs …
Marsh Posté le 10-10-2017 à 04:08:53
Marc L a écrit : |
Salut.
De quel espace parles-tu ?
Marsh Posté le 10-10-2017 à 08:54:49
milfeuilles a écrit : J'ai fait plusieurs essais, apparemment c'est la syntaxe de "Range" qui est capricieuse.
|
Marsh Posté le 12-10-2017 à 10:39:09
Et donc, quelle serait la bonne écriture pour mettre ce nom de page à l'intérieur du range ? J'avoue ne pas comprendre. Merci.
Marsh Posté le 12-10-2017 à 11:28:30
Comme indiqué, une formule de calculs utilisant la bonne syntaxe, il suffit juste d'en créer une !
A la portée d'un débutant - des mômes ayant réussi à le réaliser du premier coup - juste en ouvrant un classeur avec au moins
deux feuilles de calculs, effectuer une saisie dans une cellule.
Si besoin modifier le nom de la feuille devant comporter au moins un espace.
Sur l'autre feuille, commencer la formule par le signe = puis activer la feuille précédente, sélectionner la cellule saisie et valider.
La cellule affichant donc la saisie de l'autre feuille, juste regarder la syntaxe de la formule, est-ce si compliqué ?! …
Marsh Posté le 30-09-2017 à 18:05:33
Bonjour
Voilà j'essaie de faire une macro permettant de concaténer des valeurs sur une ligne et de mettre en forme un tableau en fonction de paramètres situées sur la même ligne.
J'ai atteint ici mes limites dans le copier/coller de code trouvé sur le net et de quelques lignes faites par déductions. Donc si vous pensez pouvoir apporter juste un petit bout de code, conseil ou correction n'hésiter pas, je ne vous demande pas de tout me fournir clef en mains mais, de m'aider pour avancer.
J'ai fait (En partie) la première partie : ouvrir la feuille, Créer un nouvelle onglet "ES" concaténer les cellules et coller la désignation à côté.
Voici le lien qui va bien: https://we.tl/vhaSg8vaSB
Pour résumer, (J'ai supprimé un grand nombre de colonnes pour simplifier et ne garder que l'essentiel)
Sur une même ligne j’aurai :
- Les cellules à concaténer (réf de l'élément)
- la désignation
- la validation de la ligne dans la catégorie "lot électrique"
- la présence d'un sectionneur de proximité ou non "IS"
- la présence d'un variateur de vitesse ou non
- la présence d'un démarreur ou non
- le nombre d'entrée Tor
- le nombre de sortie Tor
- le nombre d'entrée analogique
- le nombre de sortie analogiques
- le nombre d'entrées rtd
Ce qu’il reste à faire :
- Ajouter le jour est l'heure au nom de l'onglet pour éviter les bugs en cas d'exécutions multiple de la macro (pas primordial).
- le nombre de colonnes pouvant varier, il faudrait leur donner une position relative.
En début d'exécution je cherche les colonnes qui m'intéresses et je note leurs position dans une variable qui sera utilisée ensuite. (La manœuvre pouvant être faite manuellement en complétant les cases de l'onglet "Macro" si c'est trop compliqué (j'ai pas réussi, il en reste des traces dans la macro).
- Ne concaténer que les cellules ayant sur la même ligne un "O" dans la colonne "lot-électrique" et s'arrêter à la dernière ligne non vide du tableau (pas la première ligne vide rencontrée....).
- Créer sous chaque lignes concaténée un tableau comprenant les nombres de cellules indiqué dans les paramètres de nombre d'entrée/sortie (voir exemple dans Macro LEQ.xlsm dans l'onglet "Forme Tableau" )
Ne pas créer de tableau si case vide ou égale à 0
Je pense que c'est tout dans un premier temps.
Cette macro a principalement pour but de simplifier un travail de recopie en évitant les erreurs et oubli.
Une fois les tableau dimensionnés je n'ai plus qu'à les compléter ou à les réagencer en fonction de mes besoins.
Merci d'avance pour votre aide.
Valery
Message édité par valerypetit le 30-09-2017 à 19:14:34
---------------
Il y a deux choses d'infini au monde : l'univers et la bêtise humaine... mais pour l'univers j'en suis pas très sûr