Import Données

Y

Yapou

Guest
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.
 
S

steph

Guest
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("LaLettreDeLaColoneQueTuVeux" & 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
 
S

steph

Guest
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("LaLettreDeLaColoneQueTuVeux" & 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
 

Discussions similaires

Statistiques des forums

Discussions
314 096
Messages
2 105 825
Membres
109 437
dernier inscrit
lorenzeb