towney
Messages postés26Date d'inscriptionlundi 24 septembre 2007StatutMembreDernière intervention29 janvier 2008
-
18 janv. 2008 à 13:02
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024
-
18 janv. 2008 à 17:00
Bonjour a tous. J'ai une feuille de materiel qui s'incrémente par click dans une listbox. Chaque ligne ajoutée a 8 colonnes d'info sur le matériel(Prix, fab, etc). Je veux qu'à chaque ajout les infos soient copiées dans une autre feuille à des lignes précises et des colonnes différentes en fonction de la valeur texte de ma colonne "I".
Ex : If valeur de feuil1.Range ("I" & u)= toto then
'copier toutes les lignes avec toto et les coller dans feuil4 a partir de la ligne 42 à la ligne 51(si ligne vide,sinon aller à la suivante) avec la valeur feuil1 colonne "B" dans feuil4 colonne "H" par exemple.
Else if valeur de feuil1.Range ("I" & u)= lulu then
'copier toutes les lignes avec lulu et les coller dans feuil4 a partir de la ligne 2 à la ligne 16(si ligne vide,sinon aller à la suivante)
Etc....
Voila, trois jours que je me creuse les méninges dessus, je bloque total et je dois présenter le sujet tres bientot...
Si quelqu'un peut m'aider, en esperant avoir été précis dans l'énoncé du problème(long, désolé!).Merci d'avance
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 18 janv. 2008 à 16:52
Bonjour
Pas :
lNumLigne = 41
place = Worksheets("Mat mécanique").Range("B" & lNumLigne).Offset(lNumLigne, 0).Value
Do While place <> ""
lNumLigne = lNumLigne + 1
Loop
Mais :
lNumLigne = 41
Do While Worksheets("Mat mécanique").Range("B" & lNumLigne).Offset(lNumLigne, 0).Value
<> ""
lNumLigne = lNumLigne + 1
Loop
Sinon Place n'est jamais rafraichit et cela ne fonctionne pas.
tu peux éventuelle mettre :
Worksheets("Mat mécanique").Range("B" & lNumLigne).Offset(lNumLigne, 0)
en cache (comme tu faisait avec Place, mais le ".Value" est forcément dans le Do Loop.
Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
towney
Messages postés26Date d'inscriptionlundi 24 septembre 2007StatutMembreDernière intervention29 janvier 2008 18 janv. 2008 à 15:07
Je me doute que la méthode est fausse mais je ne sais pas comment l'écrire pour qu'à chaque ajout la feuil4 soit incrémentée quand la ligne est vide et sinon aller à la suivante. J'ai essayé beaucoup de manière differente d'écrire cette procédure différente et ca donne toujours une boucle permanente...
Aurais tu une idée pour améliorer ca?
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 18 janv. 2008 à 15:50
Salut,
Evite de faire des doublons de poste en ne changeant que la catégorie de Vb....
Tu aurais pu aussi continuer ton autre post, et ne pas le laisser dans le vent....par respect pour les membre qui prennent du temps de te répondre...non ?
towney
Messages postés26Date d'inscriptionlundi 24 septembre 2007StatutMembreDernière intervention29 janvier 2008 18 janv. 2008 à 16:13
Désolé Explorateur je pensais que mon précédent post était mal classé donc j'ai crée celui ci dans vb 2005...
Juste que je ne savais pas comment supprimer l'ancien. Mais le précédent ne reste pas dans le vent je te rassure, par respect des autres membres j'y réponds aussi:).
NHenry j'ai adapté le bout de code mais il copie toujours la meme valeur à chaques lignes vides, sans prendre en compte l'ajout d'une ou plusieurs nouvelles valeurs à la feuil1. Ce que j'essaye d'obtenir est si feuil4.ligne="" alors copier 1ere valeur, puis si 2eme valeur, alors copier à feuil4.ligne suivante derriere 1ere valeur etc...
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 18 janv. 2008 à 16:22
Bonjour a tous,
si cela peu vous aidez
pour rechercher la premiere celule vide a partir d'une celule :
Dim PremiereCelluleVide As Long
PremiereCelluleVide = [A10].End(xlDown).Row 'renvoi le nemero de la ligne de la premiere celule vide en dessous de A10
Pour rechercher la derniere valeur dans une colonne ou partie de colonne
Dim DerniereValeur As Long
DerniereValeur= Range("A:A").Find("*", , , , xlByRows, xlPrevious).Row 'renvoi le nemero de la ligne qui contient la derniere valeur en colonne A
DerniereValeur= Range("A10:A50").Find("*", , , , xlByRows, xlPrevious).Row
'renvoi le nemero de la ligne qui contient la derniere valeur depuis A10 jusqu'a A50