Bonjour
Je viens de m'inscrire dans ce forum et voici ma premiere question.
Je recupère d'un logiciel de CAO une liste contenant les caracteristiques des éléments selectionnés sur le dessin. Cette liste contient des surfaces, volumes, longueurs ...etc. Je souhaite pouvoir décaler de 2 cellules les lignes de la caractéristique qui m'interèsse afin de calculer le total. Je n'ai pa reussi a intégrer dans une macro la fonction "recherche" d'Excel. je joins le fichier d'origine ainsi que le fichier que je souhaite obtenir automatiquement.
Bonjour
Je viens de m'inscrire dans ce forum et voici ma premiere question.
Je recupère d'un logiciel de CAO une liste contenant les caracteristiques des éléments selectionnés sur le dessin. Cette liste contient des surfaces, volumes, longueurs ...etc. Je souhaite pouvoir décaler de 2 cellules les lignes de la caractéristique qui m'interèsse afin de calculer le total. Je n'ai pa reussi a intégrer dans une macro la fonction "recherche" d'Excel. je joins le fichier d'origine ainsi que le fichier que je souhaite obtenir automatiquement.
Sub test()
Dim Cel As Range
For Each Cel In Range([C1], [C65536].End(xlUp))
Select Case Right(Cel, 1)
Case "m"
Cel.Offset(0, 2) = Cel
Cel.ClearContents
Case Chr(178)
Cel.Offset(0, 2) = Cel
Cel = Cel.Offset(0, -1)
Cel.Offset(0, -1).ClearContents
Case Chr(179)
Cel.Offset(0, 2) = Cel
Cel.Offset(0, 1) = Cel.Offset(0, -1)
Cel.ClearContents
Cel.Offset(0, -1).ClearContents
End Select
Next Cel
End Sub
Ouais, je sais, je ne répond pas exactement à la question, mais c'est comme ça, Na !
sinon, si tu veux, tu peux utiliser Insert Shift:=xlToRight :
Code:
Sub test()
Dim Cel As Range
For Each Cel In Range([C1], [C65536].End(xlUp))
Select Case Right(Cel, 1)
Case Chr(178)
Cel.Insert Shift:=xlToRight
Case Chr(179)
Cel.Insert Shift:=xlToRight
Cel.Insert Shift:=xlToRight
End Select
Next Cel
End Sub
Mais c'est moins plus mieux bien
A+
EDIT : j'ai modifié Case Chr(178), "2" parce que tu as des déniomation de postes et un chiffre 2 ou 3 peut terminer un texte en colonne C
Gorfeal, merci pour ta macro mais Pierrejean a une solution plus automatique.
Pierrejean, je vois ce qui peut être fait avec le VBA et c'est génial.
Ce que tu as fais sur mon fichier correspond exactement a ce que recherche.
En cliquant sur un bouton, on choisit un texte qui est répété sur plusieurs ligne, sur la 1er colonne est le décalage se fait.
Petit problème, comment fait on pour sortir ce petit programme du fichier Excel pour l'utiliser sur d'autres fichier ? Et oui, je n'ai jamais utilisé le VBA.
J'ai réussi à ouvrir l'éditeur Visual_basic mais j'ai pas tout compris. Que dois je modifier si je veux un decalage de 2 cellules au lieu d'une seule ?
Merci encore
Campamanu
pierrejean n'étant plus là, je me permet de répondre à sa place.
Pour le décallage de deux colonnes modifie cette ligne :
Code:
Range(lesadresses(n)).Offset(0, 1).Select
par
Code:
Range(lesadresses(n)).Offset(0, 2).Select
La propriété Offset(ligne,colonne) permet de faire un décallage à droite, gauche, en haut ou en bas suivant la cellule de départ.
Tu peux aussi "geler" l'écran en rajoutant ceci au début de la macro:
Code:
[COLOR=Navy]Application.ScreenUpdating = False[/COLOR]
With ActiveSheet.Range("A1:A" & ActiveSheet.Range("A65536").End(xlUp).Row)
et ceci à la fin :
Code:
Next n
[COLOR=Navy]Application.ScreenUpdating = True[/COLOR]
End Sub
Pour exporter/importer les codes dans un autre fichier fait comme ceci :
Exportation :
-Ouvre VBA (Alt + F11)
-Dans la partie en haut à gauche, repère le nom de ton project:
VBAProject(plancher_origine.xls)
-click sur le + en face de Feuilles
-click droit sur UserForm1 et Exporter un fichier, sélectionne un dossier vide pour l'exportation et valide. Dans ce dossier tu auras deux fichiers nommés :
UserForm1.frm et UserForm1.frx
-retourne dans le project VBA et click sur le + devant Modules
-click droit sur Module1 et Exporter un fichier, sélectionne le même dossier que tout à l'heure et valide. Un fichier Module1.bas sera rajouté.
Pour importer dans un autre fichier, ouvre le et ensuite ouvre VBA, dans le menu Fichier, sélectionne Importer un fichier, choisit le dossier où tu as exporté et click sur le fichier UserForm1.frm puis valide.
Recommence la même chose (Menu Fichier, Importer un fichier) et click sur le fichier Module1.bas.
Il est un peu tard mais j'ai tout de meme fait les tests. CA MARCHE
Encore un grand merci à tous les 3 et à bientôt pour d'autres questions de ma part.