Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tester si informations dans une feuille - VBA

4 réponses
Avatar
JacquesH
Bonjour à toutes et tous,

Juste un petit problème dont j'ai du mal à me sortir et auquel je
n'ai pas trouvé réponse dans les archives du forum.

Dans un fichier, j'ai 9 feuilles appeler Feuil1 - Feuil2 - Feuil3
jusqu'à Feuil9 + une feuille de calcul faisant référence à ces 9
feuilles.

9 fois au cours de l'année, je dois copier dans ce fichier des
données en provenance d'un autre fichier.

Mon idée est de :
- Tester s'il y a déjà des informations sur la Feuil1. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil2.
- Tester s'il y a déjà des informations sur la Feuil2. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil3.
- Ainsi de suite jusqu'à la feuille 9.

Je ne sais pas comment le traduire en VBA.

Merci de vos idées.

Jacques

4 réponses

Avatar
anonymousA
bonjour,

'tu déclares ton tableau de Feuil1 à Feuil9 sur le modéle suivant puis tu
parcours les éléments du tableau pour trouver la feuille qui est sans infos (
entendons-nous, ici on teste que ce qu'il y a dans les cellules. S'il y a un
objet ( graphique ou autre), ce n'est pas testé). Si il y a une feuille vide
d'info , on copie ce qui vient du fichier ( je suppose que tu as pris la
peine de faire l'opération de chargement en mémoire des données à copier pour
pouvoir le réalilser dans la boucle for si une feuille est vide). Si aucune
des feuilles n'est vide, alors tu auras le message te l'indiquant.

sub copiefeuillesnonvides

For Each f In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))

if Application.WorksheetFunction.CountA(f.Cells)=0 then
'ici tu copies tes données venant d'un autre fichier sur la feuille vide
'dont le nom courant est f.name
exit sub
end if

Next

msgbox "aucune des feuilles n'est vide d'informations

end sub

A+


Bonjour à toutes et tous,

Juste un petit problème dont j'ai du mal à me sortir et auquel je
n'ai pas trouvé réponse dans les archives du forum.

Dans un fichier, j'ai 9 feuilles appeler Feuil1 - Feuil2 - Feuil3
jusqu'à Feuil9 + une feuille de calcul faisant référence à ces 9
feuilles.

9 fois au cours de l'année, je dois copier dans ce fichier des
données en provenance d'un autre fichier.

Mon idée est de :
- Tester s'il y a déjà des informations sur la Feuil1. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil2.
- Tester s'il y a déjà des informations sur la Feuil2. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil3.
- Ainsi de suite jusqu'à la feuille 9.

Je ne sais pas comment le traduire en VBA.

Merci de vos idées.

Jacques






Avatar
anonymousA
re,

j'ai un peu allégé ton code. Et d'autre part, il faut bien que tu identifies
la feuille sur laquelle les données doivent être copiées ( c'est le but de
f.Range("A1").PasteSpecial xlPasteValues ). Ai rajouté au passage un
Application.CutCopyMode = False pour liberer les données du prese-papiers.

Peux te garantir que ca fonctionne puisque testé avec succès.

Application.ScreenUpdating = False

Cells.Copy
Workbooks.Open Filename_
"C:jacqueshFORMATION INFOCHANTIERSTestCopie2.xls"
For Each f In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))

If Application.WorksheetFunction.CountA(f.Cells) = 0 Then
'ici tu copies tes données venant d'un autre fichier sur la feuille vide
'dont le nom courant est f.name

f.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Exit Sub
End If

Next

MsgBox "aucune des feuilles n'est vide d'informations"
Application.CutCopyMode = False

A+


Bonjour et merci pour ta réponse.

J'ai fait un essai rapide : je viens de mettre le code que tu m'as donné avec
celui obtenu avec l'enregistreur de macro.

J'ai obtenu ceci :

Sub Macro1()
'
Application.ScreenUpdating = False
Cells.Select
Selection.Copy
Workbooks.Open FileName:= _
"C:jacqueshFORMATION INFOCHANTIERSTestCopie2.xls"

For Each f In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))
If Application.WorksheetFunction.CountA(f.Cells) = 0 Then
'ici tu copies tes données venant d'un autre fichier sur la feuille vide
'dont le nom courant est f.name
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues
Exit Sub
End If

Next

MsgBox "aucune des feuilles n'est vide d'informations"

End Sub

Je pense qu'il y a un problème avec la fonction "coller" car la Macro bloque sur
la ligne "ActiveSheet.Paste".

Peux-tu m'indiquer quelques pistes.

Merci d'avance.

Jacques


bonjour,

'tu déclares ton tableau de Feuil1 à Feuil9 sur le modéle suivant puis tu
parcours les éléments du tableau pour trouver la feuille qui est sans infos (
entendons-nous, ici on teste que ce qu'il y a dans les cellules. S'il y a un
objet ( graphique ou autre), ce n'est pas testé). Si il y a une feuille vide
d'info , on copie ce qui vient du fichier ( je suppose que tu as pris la
peine de faire l'opération de chargement en mémoire des données à copier pour
pouvoir le réalilser dans la boucle for si une feuille est vide). Si aucune
des feuilles n'est vide, alors tu auras le message te l'indiquant.

sub copiefeuillesnonvides

For Each f In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))

if Application.WorksheetFunction.CountA(f.Cells)=0 then
'ici tu copies tes données venant d'un autre fichier sur la feuille vide
'dont le nom courant est f.name
exit sub
end if

Next

msgbox "aucune des feuilles n'est vide d'informations

end sub

A+


Bonjour à toutes et tous,

Juste un petit problème dont j'ai du mal à me sortir et auquel je
n'ai pas trouvé réponse dans les archives du forum.

Dans un fichier, j'ai 9 feuilles appeler Feuil1 - Feuil2 - Feuil3
jusqu'à Feuil9 + une feuille de calcul faisant référence à ces 9
feuilles.

9 fois au cours de l'année, je dois copier dans ce fichier des
données en provenance d'un autre fichier.

Mon idée est de :
- Tester s'il y a déjà des informations sur la Feuil1. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil2.
- Tester s'il y a déjà des informations sur la Feuil2. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil3.
- Ainsi de suite jusqu'Ã la feuille 9.

Je ne sais pas comment le traduire en VBA.

Merci de vos idées.

Jacques












Avatar
JacquesH
Bonjour et merci pour ta réponse.

J'ai fait un essai rapide : je viens de mettre le code que tu m'as donné avec
celui obtenu avec l'enregistreur de macro.

J'ai obtenu ceci :

Sub Macro1()
'
Application.ScreenUpdating = False
Cells.Select
Selection.Copy
Workbooks.Open FileName:= _
"C:jacqueshFORMATION INFOCHANTIERSTestCopie2.xls"

For Each f In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))
If Application.WorksheetFunction.CountA(f.Cells) = 0 Then
'ici tu copies tes données venant d'un autre fichier sur la feuille vide
'dont le nom courant est f.name
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues
Exit Sub
End If

Next

MsgBox "aucune des feuilles n'est vide d'informations"

End Sub

Je pense qu'il y a un problème avec la fonction "coller" car la Macro bloque sur
la ligne "ActiveSheet.Paste".

Peux-tu m'indiquer quelques pistes.

Merci d'avance.

Jacques


bonjour,

'tu déclares ton tableau de Feuil1 à Feuil9 sur le modéle suivant puis tu
parcours les éléments du tableau pour trouver la feuille qui est sans infos (
entendons-nous, ici on teste que ce qu'il y a dans les cellules. S'il y a un
objet ( graphique ou autre), ce n'est pas testé). Si il y a une feuille vide
d'info , on copie ce qui vient du fichier ( je suppose que tu as pris la
peine de faire l'opération de chargement en mémoire des données à copier pour
pouvoir le réalilser dans la boucle for si une feuille est vide). Si aucune
des feuilles n'est vide, alors tu auras le message te l'indiquant.

sub copiefeuillesnonvides

For Each f In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))

if Application.WorksheetFunction.CountA(f.Cells)=0 then
'ici tu copies tes données venant d'un autre fichier sur la feuille vide
'dont le nom courant est f.name
exit sub
end if

Next

msgbox "aucune des feuilles n'est vide d'informations

end sub

A+


Bonjour à toutes et tous,

Juste un petit problème dont j'ai du mal à me sortir et auquel je
n'ai pas trouvé réponse dans les archives du forum.

Dans un fichier, j'ai 9 feuilles appeler Feuil1 - Feuil2 - Feuil3
jusqu'à Feuil9 + une feuille de calcul faisant référence à ces 9
feuilles.

9 fois au cours de l'année, je dois copier dans ce fichier des
données en provenance d'un autre fichier.

Mon idée est de :
- Tester s'il y a déjà des informations sur la Feuil1. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil2.
- Tester s'il y a déjà des informations sur la Feuil2. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil3.
- Ainsi de suite jusqu'Ã la feuille 9.

Je ne sais pas comment le traduire en VBA.

Merci de vos idées.

Jacques








Avatar
JacquesH
Tout fonctionne à merveille.

Vraiment très sympa de ta part.

Encore merci.

Jacques


re,

j'ai un peu allégé ton code. Et d'autre part, il faut bien que tu identifies
la feuille sur laquelle les données doivent être copiées ( c'est le but de
f.Range("A1").PasteSpecial xlPasteValues ). Ai rajouté au passage un
Application.CutCopyMode = False pour liberer les données du prese-papiers.

Peux te garantir que ca fonctionne puisque testé avec succès.

Application.ScreenUpdating = False

Cells.Copy
Workbooks.Open Filename_
"C:jacqueshFORMATION INFOCHANTIERSTestCopie2.xls"
For Each f In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))

If Application.WorksheetFunction.CountA(f.Cells) = 0 Then
'ici tu copies tes données venant d'un autre fichier sur la feuille vide
'dont le nom courant est f.name

f.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Exit Sub
End If

Next

MsgBox "aucune des feuilles n'est vide d'informations"
Application.CutCopyMode = False

A+


Bonjour et merci pour ta réponse.

J'ai fait un essai rapide : je viens de mettre le code que tu m'as donné avec
celui obtenu avec l'enregistreur de macro.

J'ai obtenu ceci :

Sub Macro1()
'
Application.ScreenUpdating = False
Cells.Select
Selection.Copy
Workbooks.Open FileName:= _
"C:jacqueshFORMATION INFOCHANTIERSTestCopie2.xls"

For Each f In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))
If Application.WorksheetFunction.CountA(f.Cells) = 0 Then
'ici tu copies tes données venant d'un autre fichier sur la feuille vide
'dont le nom courant est f.name
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues
Exit Sub
End If

Next

MsgBox "aucune des feuilles n'est vide d'informations"

End Sub

Je pense qu'il y a un problème avec la fonction "coller" car la Macro bloque sur
la ligne "ActiveSheet.Paste".

Peux-tu m'indiquer quelques pistes.

Merci d'avance.

Jacques


bonjour,

'tu déclares ton tableau de Feuil1 à Feuil9 sur le modéle suivant puis tu
parcours les éléments du tableau pour trouver la feuille qui est sans infos (
entendons-nous, ici on teste que ce qu'il y a dans les cellules. S'il y a un
objet ( graphique ou autre), ce n'est pas testé). Si il y a une feuille vide
d'info , on copie ce qui vient du fichier ( je suppose que tu as pris la
peine de faire l'opération de chargement en mémoire des données à copier pour
pouvoir le réalilser dans la boucle for si une feuille est vide). Si aucune
des feuilles n'est vide, alors tu auras le message te l'indiquant.

sub copiefeuillesnonvides

For Each f In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))

if Application.WorksheetFunction.CountA(f.Cells)=0 then
'ici tu copies tes données venant d'un autre fichier sur la feuille vide
'dont le nom courant est f.name
exit sub
end if

Next

msgbox "aucune des feuilles n'est vide d'informations

end sub

A+


Bonjour à toutes et tous,

Juste un petit problème dont j'ai du mal à me sortir et auquel je
n'ai pas trouvé réponse dans les archives du forum.

Dans un fichier, j'ai 9 feuilles appeler Feuil1 - Feuil2 - Feuil3
jusqu'à Feuil9 + une feuille de calcul faisant référence à ces 9
feuilles.

9 fois au cours de l'année, je dois copier dans ce fichier des
données en provenance d'un autre fichier.

Mon idée est de :
- Tester s'il y a déjà des informations sur la Feuil1. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil2.
- Tester s'il y a déjà des informations sur la Feuil2. Si non,
je copie les données de l'autre fichier. Si oui, je passe à la Feuil3.
- Ainsi de suite jusqu'Ã la feuille 9.

Je ne sais pas comment le traduire en VBA.

Merci de vos idées.

Jacques