![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour j''aurais une petite question ...
Je travaille sur 1 classeur de plusieurs feuilles. Ma base de données est sur la feuille 'bd". Dans cette feuille g un certain nb de colonnes qui sont remplies. Ce que je veux c créer une macro qui puisse importer des valeurs de la colonne C de la feuille "bd" et les coller ds une autre feuille du même classeur. Sans cela j'utilise la fomule tout bête : =bd!C1 et ensuite je duplique la formule. Le problème est que jen faisant cela j'importe toute la colonne C de ma feuille "bd" et même des cellule ou il n'ya pas de valeur. Donc ce ke je veux faire c importer ds ma seconde feuille les valeurs de la colonne C de "bd" qui ne sont pas nulles. Exemple : ds la colonne C de "bd" g d valeurs de C4 à C75 Comment importer UNIQUEMENT les valeurs C4 à C75 dans ma seconde feuille. Je n'arrive pas a créer une formule qui selectionne AUTOMATIQUEMENT les cases de la colonne C de "bd" ou il y a des valeurs. Cela me pose problème car ensuite avec une macro je trie les données importées : et comme j'importe toute la colonne C de C4 à C 123456 (je sais pas combien y'a de lignes en tout dans une feuille excel lol ) j'ai plein de cellules vides dans mon tri (soit toutes regroupées au début, soit toutes regroupées a la fin). G oublié de préciser que lorsque je cherche à importer automatiquement les valeurs de la colonne C (uniquement celles qui ne sont pas nulles), je ne connais pas le nombre de cellule de C comportant des valeurs. Ce que je veux dire c quee je veux importer "à l’aveugle" les données de la colonne C de la feuille "bd" vers ma nouvelle feuille, sans savoir combien la colonne C comporte de valeurs non nulles. Car si je sais que ma colonne C de "bd" va de C4 à C75 là je sais faire l'import. |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Yapou,
je suis loin d'être un pro du vba, donc il y a surement mieux que ce que je vais te proposer, mais bon se sera tjs ça. Sub RecopiePropre IntNumLgn = 2 '~~Cette val à 2 pr ne pas écraser les titres de des champs de la feuille qui va acceuillir la copie for i=2 to 1000 '~~1000 correspond au nb max de ligne ds ta colone à copier if Worksheets("bd").Range("C" & i).Value <> "" then '~~ce if permet de vérifier si la cellule est pleine : si oui on copie ds l'autre feuille, si non on passe à la cellule suivante. Worksheets("AutreFeuille").Range("LaLettreDeLaColo neQueTuVeux" & IntNbLgn).Value = Worksheets("bd").Range("C" & i).Value 'cette ligne te permet d'affecter la valeur de la cellule Range("C" & i) à la cellule Range("LaLettreDeLaColoneQueTuVeux" & IntNbLgn) IntNumLgn=IntNumLgn+1 'ici on incrémente de 1 pour écrire à la cellule suivante, sinon on écrase à chaque passage et à la fin tu n'as qu'un résultat End if next End Sub Voilà, ça vaut ce que ça vaut, mais tu devrais avoir ta colone copiée proprement. Steph |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
Re Yapou,
je viens de voir ce que ça donne ds le forum et ma réponse est illisible plus une erreur. Je te la redonne sans les commentaires Sub RecopiePropre IntNumLgn = 2 for i=2 to 1000 if Worksheets("bd").Range("C" & i).Value <> "" then Worksheets("AutreFeuille").Range("LaLettreDeLaColo neQueTuVeux" & IntNumLgn).Value = Worksheets("bd").Range("C" & i).Value IntNumLgn=IntNumLgn+1 End if next End Sub J'espère que c'est plus lisible Steph |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|