Excel copier/coller macro

Bonjour,
bonjour,
j'ai 4 feuilles je voudrais copier coller les cellules colonne A des 3 premieres feuilles dans la meme colonne de la feuille 4 les unes apres les autres en ayant un teste si dans colonne feuille 1 cellule vide alors copier colonne A feuille 2 si cellule vide alors copier cellule colonne A feuille 3
merci pour votre aide
Configuration: Linux
Firefox 3.0.12

32 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Copier les cellules de la colonne A des trois premières feuilles dans la colonne A de la feuille 4, tester si une cellule est vide avant de passer à la suivante. Plusieurs solutions utilisent des formules ou des macros qui combinent ESTVIDE et SI pour chaîner les feuilles 1 à 3 avant d’écrire le résultat dans la feuille 4. Certaines propositions privilégient des tests ligne par ligne sur A3, A4 ou A5 et des boucles qui avancent jusqu’à trouver une cellule non vide, puis reportent la valeur dans la feuille 4. En cas de données incohérentes ou de caractères invisibles, certaines solutions évoquent des ajustements manuels ou des nettoyages pour éviter que des valeurs fantômes n’apparaissent en fin de colonne.

Bobot (l’IA à votre service)
  1. Contributeur
    Non, "temp" est le nom de la feuille où il met les données.. mais tu peux l appelé comme tu veux, il faut juste changer le nom de la feuille destination ici

    If .Name <> "Temp" Then
    Worksheets("Temp").Cells(NumLigneTemp, 1) = .Cells(NumLigne, 1)

    Apres tes autres feuilles (sopurces) peuvent s appeler comme tu veux et pas forcement avec un nom qui se vu car avec:
    For feuille = 1 To Sheets.Count
    With Worksheets(feuille)

    la variable feuille prend le numéro d'une feuille, et je fais référence à cette feuille source via son numéro et non son nom ;)
    1. je commence a voir,

      mais visiblement si dans le classeur les feuilles ne sont pas temp alors ...
      If .Name <> "Temp" Then
      mais le classeur contient au moins 17 feuilles seule 13 sont concernés peut ont dire les 13 premieres feuilles
      1. Contributeur
        ah.. on y arrive :)

        Ca donnerais ca ;) :

        NumLigneTemp = 1 'Numero de la ligne de la colonne A dans Temp
        For feuille = 1 To Sheets.Count
        With Worksheets(feuille)
        If .Name <> "Temp" Then
        .Activate
        For NumLigne = 2 To 36
        If .Cells(NumLigne, 1) <> "" Then
        Worksheets("Temp").Cells(NumLigneTemp, 1) = .Cells(NumLigne, 1)
        NumLigneTemp = NumLigneTemp + 1
        End If
        Next
        End If
        End With
        Next
        1. Contributeur
          donc tu veux que de :
          feuil1 a1=5 a2=3 a3=vide a4=6
          feuil2 a1=2 a2=vide a3=vide a4=9

          ca te mette dans la feuille temp :

          a1=5 a2=3 a3=6 a4=2 a5=9 c'est ca?
          1. si,
            dans chacune des 13 feuille comme je dois rentrer les données dans la plage a2:a32 il y a les meme cellules remplie pas avec les meme valeur
            feuil1 a1=5 a2=3 a3=vide a4=6
            feuil2 a1=2 a2=vide a3=vide a4=9

            etc
            en fait je rentre des montants dans les treize feuilles et dans temp je dois toutes les inscrire dans une seule colonne a1:a......................
            1. dans chacune des 13 feuilles il y aura peut etre des vides a1=2 a2=3 a3=vide a4=8 etc mais dans la feuille temp toutes doivent s'inscrire les une apres les autre dans la colonne A et sans aucune cellule vide
              1. Contributeur
                as tu des cellules vides dans une feuille comme :
                A1=a, A2=b, A4=c,A5=d

                ou sont elles vraiment toutes à la suite ?
                1. j'ai 13 feuil + une feuille temp
                  je voudrais copier a2:a32 de chacune des 13 feuilles vers la colonne A de la feuil temp les une en dessous des autres
                  mais avec un test disant de recopier seulement les cellules contenant une valeur afin que dans la feuil temp il ni ai pas de cellule vides entre les valeur car dans chacune des 13 feuil dans la plage a2:a32 toutes les cellules ne sont pas pleines
                  1. je suis désolé mais je ne comprends pas vraiment,tous simplement car mon niveau ........
                    j'arretes de vous importuner
                    merci
                    1. Contributeur
                      Mais nan!! revient :p

                      Il faut se prendre un peu la tete pour comprendre.. apres tu le sera, et tu comprendra comment faire...
                  2. Contributeur
                    bon, j comprend pas tout.. mais voici les fonctions qui peuvent t'aider :

                    for NumFeuille =1 to 3
                    ligne=1
                    set ValCherche = Worksheets(NumFeuille).Cells(ligne, 1)
                    Do While ValCherche <> ""

                    Worksheets(4).Cells(ligne, 1) = Worksheets(NumFeuille).Cells(ligne, 1)

                    ligne=ligne+1
                    set ValCherche = Worksheets(NumFeuille).Cells(ligne, 1)

                    loop

                    next
                    1. dans la colonne A des feuille 1,2,3 il y a un certains nombre de cellule remplies et je voudrais copier chaque cellule dans la feuil 4 les une apres les autre dans une seule colonne A
                      donc test dans feuille 1 copier chaque cellule dans feuil4 jusqua cellule vide si vide passer dans feuille 2 copier toutes cellule remplies si vide passer feuille 3 etc
                      1. Contributeur
                        et donc... il y a forcément qu'une seule feuille (1 2 ou 3) avec la colonne A de remplie ou non??

                        ou alors, des fois c'est dans la feuille1, des fois dans la 2 et des fois dans la 3 ex:

                        feuille1
                        A1=a
                        A2=b
                        A7=g

                        feuille2
                        A3=c
                        A5=e

                        feuille3
                        A4=d
                        A6=f

                        => feuille4 et regroupe tout

                        A1=a
                        A2=b
                        a3=c
                        a4=d
                        a5=e
                        a6=f
                        a7=g
                        1. bonjour
                          en fait copier toutes les cellules remplies de la colonne A feuil1 de la feuil 2 de la feuil3 tous cela dans la colonne A de la feuil 4 et ce les unes aprés les autres avec un teste disant que si dans feuil1 cellule vide alors passer a feuil 2 etc
                          1. Contributeur
                            et donc je suppose que dans aucune autre feuille, A1, A et A4 sont remplis, mais que quelque part dans une autre, A3 est remplis c'est ca? Ce que je veux dire, c'est qu il n y aura pas de cellules remplies 2 fois. ex feuille1 A2=1 et Feuille2 A2=3 car auquel cas, laquel je dois mettre dans ta feuille temps?

                            Je demande des précisions car ca peut tout changer sur le model de programmation ;)
                        2. Contributeur
                          ptite question.. il y a forcément qu'une seule feuille (1 2 ou 3) avec la colonne A de remplie ou non??

                          si non, à partir de quel feuille la feuille 4 doit s'afficher ?

                          si oui, et si j'ai bien compris tu veux afficher dans feuillle 4 TOUTE la colonne A correspondant à la feuille (1,2 ou 3) aillant une valeur au moins en A1 c'est ça ?
                          1. j'arrive plus au niveau des neurones excuses moi

                            merci pour tous vraiment
                            1. Bon, c'est toujours pas des points mais "!". Maintenant, dans ta formule, il n'y a pas d'espace entre tes horaires ... mais pas quand tu le recopies ... il y a un blanc entre 13h et 19 ... Maintenant si c'etait ca il y aurait un #REF.

                              T'es sur que ta cellule 'mardi 13h19h coop'!A18 est rempli pas un nombre ?
                              1. je suis désolé

                                =SI(NON(ESTVIDE('mardi 9h13h coop'.A18));'mardi 9h13h coop'.A18;'mardi 13h19h coop'.A18)

                                debut de colonne feuille 1 impect a la fin de la colonne il y a un 0 mais ne passe pas en feuille 2 'mardi 13h 19h coop'
                                1. meme avec !

                                  =SI(NON(vide('mardi 9h13h coop'!A2));'mardi 9h13h coop'!A2;'mardi 13h19h coop'!A2)

                                  # nom ?
                                  • 1
                                  • 2