Bonjour à tous,
ceci étant mon premier post sur ce forum, je tiens à dire à ceux qui n'aurait pas deviné en lisant mes codes VBA probablement affreux que je débute en et que la seule utilisation que j'en ai est à titre professionnel et extrêmement occasionnelle.
Pour commencer je souhaite expliquer le contexte qui me pousse à demander de l'aide :
J'ai acheté un logiciel de devis de chiffrage spécialisé dans la charpente métallique puisque c'est mon métier (bravo).
Ce logiciel permet d'intégrer des métrés au devis. métré qu'il faut remplir ligne par ligne avec la désignation produit la quantité et la dimension des produits (ici essentiellement des profilés de construction en acier) ce qui est assez long et pénible surtout quand l'entreprise à intégrer des process de fabrication qui font qu'on utilise toujours les mêmes profilés pour certaines pièces.
Par chance, le monsieur qui à créé le logiciel à permis l'import de listes au format CSV (qu'on peut faire sous excel) qui permet d'éviter de tout remplir ligne par ligne.
J'ai donc créé un fichier excel qui me donne cette liste. il se compose d'une feuille ou on rentre les caractéristiques et dimension du bâtiment et dans une autre on obtient le métré (quantités, profil, longueurs).
L'ennui c'est que dans cette liste, j'ai beaucoup de lignes = 0 (lignes non utilisée), je me suis dit qu'en les masquant à l'aide d'un bouton de commande dont voici le code :
cela aurait résolu le problème, l'ennui c'est que masquer ces lignes ne change rien pour l'export, elles apparaissent quand même dans le logiciel de devis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub CommandButton1_Click() Dim LastLig As Long, i As Long With sheets("Formulaire") LastLig = .Cells(.Rows.Count, "C").End(xlUp).Row For i = 1 To LastLig If .Range("C" & i).Text = "0" Then .Rows(i).Hidden = True Next i End With End Sub
Je suis donc reparti du même code en le modifiant pour qu'il supprime les lignes =0 en colonne C. En dehors du fait que c'est complètement barbare et que ça m'oblige à garder un fichier source, ça ne fonctionnait pas non plus car la colonne C à des cellules liées à d'autre cellules de cette même colonne ce qui fait qu'avec la suppression certaines cellules n'étaient plus =0 mais à #REF
Je sèche donc un peu.
Si mon niveau était meilleur l'idéal aurait été un bouton de commande qui enregistre directement un fichier CSV de toutes les lignes <0 mais c'est de trop haut niveau pour moi.
Donc toujours en repartant de mon code initial, j'ai tenté de faire un copier des lignes <0 en colonne C pour coller dans une feuille vierge à coté mais mon code ne fonctionne pas et je ne comprend pas pourquoi mais comme c'est du raboutage de codes différents et que j'ai parfois du mal à comprendre ce que je fait ça ne m'étonne pas vraiment.
Si quelqu'un peut m'expliquer ce qu'il manque. D'après le débogueur, la ligne qui pose problème et la sélection de la première ligne de la 2ème feuille mais je ne comprend pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Private Sub CommandButton1_Click() Dim LastLig As Long, i As Long With Sheets("Métré") LastLig = .Cells(.Rows.Count, "C").End(xlUp).Row For i = 1 To LastLig If .Range("C" & i) < 0 Then .Rows(i).Copy With Sheets("Export CSV").Range("A1").Select Selection.Insert Shift:=xlDown End With Next i End With End Sub
Partager