Excel copier/coller macro
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
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.
-
ContributeurNon, "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 ;) -
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 -
Contributeurah.. 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 -
exactement
merci -
Contributeurdonc 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? -
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...................... -
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
-
Contributeuras tu des cellules vides dans une feuille comme :
A1=a, A2=b, A4=c,A5=d
ou sont elles vraiment toutes à la suite ? -
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 -
je suis désolé mais je ne comprends pas vraiment,tous simplement car mon niveau ........
j'arretes de vous importuner
merci -
Contributeurbon, 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 -
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 -
Contributeuret 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 -
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-
Contributeuret 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 ;)
-
-
Contributeurptite 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 ? -
j'arrive plus au niveau des neurones excuses moi
merci pour tous vraiment -
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 ? -
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' -
La fonction est : ESTVIDE pas vide ... D'ou le #NOM ;-P
-
meme avec !
=SI(NON(vide('mardi 9h13h coop'!A2));'mardi 9h13h coop'!A2;'mardi 13h19h coop'!A2)
# nom ?
- 1
- 2