Faire une macro en copiant des cellule pleine

Bonjour a tous,

j'aimerais faire une macro afin de crée une liste en copiant d'une feuille a l'autre les cellule non vide d'une feuille de donnée, et faire un autre copier coller de certain élément de cette celllule.

je vous joins le fichier pour que vous puissiez mieux comprendre merci

16requete.zip (10.37 Ko)

voici j ai deja travailler dessus pour essayer d avancer et trouver des solution si vous pouvez regarder et m aider ... ca serais sympas

12requete.zip (14.05 Ko)

Salut svbb,

très intéressant mais je n'y comprends absolument rien!

Je vois bien l'onglet LISTE où tu veux créer cette liste avec des intitulés de colonne introuvables dans 210 et ton onglet COPIE où tu veux extraire certains éléments de LISTE, j'imagine... où les intitulés de colonne ont disparu!

Si tu n'as pas une tonne d'explications claires et précises, tu devras te débrouiller tout seul!

A+

Salut Curulis !

Le sujet est dupliqué sous des noms différents.

Nous sommes donc au moins deux à rien comprendre à l'objet de la chose !

S'il y a déjà deux sujets pour ça, cela va être encore un imbroglio où on va passer du temps sans s'y retrouver....

Ma religion est donc faite !

merci pour ton attention, j ai refait le fichier avec les dernière modif que j ai faite en espérant que tu y vois un peu plus clair

10requete.zip (29.18 Ko)

Salut svbb,

bon, j'ai compris la première partie de ton calcul mais pour gagner du temps et ne pas faire le travail 10X, explique-moi comment tu les transformes pour figurer dans LISTE, le passage par SELECTION_COPIE me paraissant complètement inutile!

Je retrouve dans LISTE les mêmes valeurs qu'en 210, certaines concaténées puis isolées ailleurs...

Quelle genre de date en LISTE colonne E (AKTIV) ?

Autant avancer le travail en une boucle!

Bref, d'autres explications, stp !

@MFerrand

Bonjour MFerrand, je vois que c'est le plus malin qui laisse la patate chaude à l'autre!

A+

bon je vais travailler encore dessus histoire de pouvoir faire qqch de clair ... lol je vous renvoie un fichier dans la journée merci pour l'attention que vous y avez portez

j ai beau retrourne le probleme dans tout les sens, je n'arrive pas a trouver une solution, j ai enlever l'onglet selection_copie, pour ne partir que sur les 2 autre, j ai reduit les informations pour essayer d'avoir une meilleure lecture de ce que je voudrais faire...

j'essaye de vous réexpliquer...

  • trouver cellule pleine dans la colonne C;
  • mettre la valeur de cette cellule dans l'onlet liste dans colonne I
  • ensuite prendre les valeurs correspondante dans la même ligne, en colone A et mettre la valeur dans liste colonne f
ainsi que dans la même colonne prendre la valeur de la 2éme ligne dans liste colonne E

si déja je voyais comment coder le fait de "selectionner" ou avoir la valeur qui correspondrait a la même ligne et la même colonne ca serais deja un gros point de gagner

10essaie2.zip (6.76 Ko)

voici le fichier plus lisible je crois....

maintenant j ai bessoin de faire changer les 2 donnée suivante

nb_ligne_210 & nb_colonne_210

10essaie2.zip (14.84 Ko)

voici encore des modification qui on été faite, maintenant si on selectionne une cellule "non-vide" entre C4 et AD35, et qu'on lance la macro il va mettre sur le coter (bdd) les information nécésaire a cette cellule.

l'idéale reste bien sur qu'il puisse aller chercher lui même la cellule non vidde qui se trouve dans cette plage de donnée, car il n ' y a qu'une partie des informations a récupéré, et cela pourrais etre long....

15sauvegarde.zip (17.53 Ko)

Salut svbb,

en tout cas, ton opiniâtreté à trouver une solution est à louer!

Bon, à défaut d'explications, voici la première partie du calcul que tu réclame depuis belle lurette.

Private Sub cmdGo_Click()
'
Dim wks As Worksheet
Set wks = Worksheets("BDD")
iRow = Range("A" & Rows.Count).End(xlUp).Row
iCol = Cells(2, Columns.Count).End(xlToLeft).Column
'
iLig = 1
For x = 4 To iRow
    For y = 3 To iCol
        If Cells(x, y) <> "" Then
            iLig = iLig + 1
            wks.Cells(iLig, 1) = [A1]
            wks.Cells(iLig, 3) = [A1] & Cells(x, 1) & Cells(x, 2) & Cells(2, y)
            wks.Cells(iLig, 5) = CDate(Cells(2, y))
            wks.Cells(iLig, 6) = Cells(x, 1) & Cells(x, 2)
            wks.Cells(iLig, 9) = Cells(x, y)
        End If
    Next
Next
'
End Sub

A+ pour le prochain épisode!

5bddsvbb.xlsm (44.45 Ko)

MERCI merci MERCI merci MERCI merci,

super ca mache nikel nikel,

j'y était arriver par un chemin beaucoup plus long et laborieux mdr mais l 'idee etait la mle voila plus seraine pour les autres onglet a faire mille merci

juste une petite question j'ai essayer de mettre d'autre données, ou le changer de fichier en copiant la macro mais la j ai plus rien....

il y a qqch a faire pour pouvoir copier dans l onglet 210 d'autre données a ajouter a la suite de bdd?

3extraire-2.zip (29.52 Ko)

Salut svbb,

sauf à avoir été prévue dès l'origine pour être souple, l'efficacité de toute macro repose sur un diktat : on ne touche pas à la structure d'un fichier!

Dans le cas de ton nouveau fichier, tu as placé la ligne 2 originelle (1900, 1905, ...) à la ligne 3, laissant la ligne 2 VIDE!

Or, le calcul du nombre de colonnes à traiter repose sur cette instruction :

iCol = Cells(2, Columns.Count).End(xlToLeft).Column

Dans le cas d'une ligne 2 vide : iCol= 1. Ça ne risquait pas d'aller bien loin!

Soit, tu respecte l'ordre établi, soit tu modifies en conséquence le code de ta macro (il y d'autres lignes de code à corriger dans ce cas!).

A+

10extraire-2.xlsm (57.04 Ko)

ok merci beaucoup derniere question, pour que a chaque fois qu'on appuie sur le bouton, les données se mette en dessous des autre dans l onglet bbd ?

je vois que tu as mis un .End(xlUp).

mais si je change les données celles sur l onglet bdd s'effface...

merci

ok merci beaucoup derniere question, pour que a chaque fois qu'on appuie sur le bouton, les données se mette en dessous des autre dans l onglet bbd ?

je vois que tu as mis un .End(xlUp).

mais si je change les données celles sur l onglet bdd s'effface...

merci

Bonsoir svbb,

voici! C'est la variable 'iLig' qui règle l'affichage dans BDD qu'il faut initialiser d'une manière différente!

Ça va t'en faire des milliers de lignes, dis donc!

Private Sub cmdextraire_Click()
'
Dim wks As Worksheet
Set wks = Worksheets("BDD")
'
iRow = Range("A" & Rows.Count).End(xlUp).Row
iCol = Cells(2, Columns.Count).End(xlToLeft).Column
'
Application.ScreenUpdating = False
'
With wks
    iLig = .Range("A1").End(xlDown).Row
    For x = 4 To iRow
        For y = 3 To iCol
            If Cells(x, y) <> "" Then
                iLig = iLig + 1
                .Cells(iLig, 1) = [A1]
                .Cells(iLig, 3) = [A1] & Cells(x, 1) & Cells(x, 2) & Cells(2, y)
                .Cells(iLig, 5) = CDate(Cells(2, y))
                .Cells(iLig, 6) = Cells(x, 1) & Cells(x, 2)
                .Cells(iLig, 9) = Cells(x, y)
            End If
        Next
    Next
End With
'
Application.ScreenUpdating = True
'
End Sub

8)

A+

Merci ton code est vachement plus clair et plus simple que celui que j avais fait mais oui.... des milliers de lignes c est pour ca que j avais besoin d une belle boucle je test cela et je te dis quoi mais merci encore

c est juste parfait merci

Rechercher des sujets similaires à "macro copiant pleine"