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

For i = x To y

5 réponses
Avatar
PhilPhil
Bonjour la communauté,

Après avoir parcouru en vain les messages précédents, je souhaiterais
obtenir un début de solution à ma demande.

En Français :

Si la valeur de la cellule BD12 de ma feuille 1 est supérieure à 0 alors je
remercie Excel de faire tout seul, comme un grand, un copier de la cellule
BD12 de ma feuille 1 dans la cellule A1 de ma feuille 2, puis de faire un
copier de la cellule A12 de ma feuille 1 pour la coller dans la cellule B1 de
ma feuille 2 et enfin de faire un copier de la cellule C12 de ma feuille 1
dans la cellule C1 de ma feuille 2.
Cette opération est à réaliser sur les cellules BD12 à BD111.

J'ai réussi à le faire avec : If Range("BD12").Value > 0 Then
MAIS cela m'a demandé de le faire 99 fois... en plusieurs codes car la
procédure était trop grande...

En VBA :

J'ai tenté sans succès :

For I = 12 To 111
Set curCell = Worksheets("Feuil1").Cells(I, 56)
If Abs(curCell.Value) > 0 Then
Sheets("Feuil1").Select
Cells(I, 56).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Application.Run "Plannings.xls!Feuil3.Test"
ActiveSheet.Paste
Sheets("Feuil1").Select
Cells(I, 1).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Application.Run "Plannings.xls!Feuil3.Test2"
ActiveSheet.Paste
Sheets("Feuil1").Select
Cells(I, 3).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Application.Run "Plannings.xls!Feuil3.Test3"
ActiveSheet.Paste
Sheets("Feuil1").Select
Next
End If
End Sub

L'Application.Run "Plannings.xls!Feuil3.Test et 2 et 3 sert à trouver la
dernière ligne de la colonne A, B & C.
Il m'indique Next sans For, en message d'erreur...
Et là, c'est le drame...

MERCI d'avance pour votre aide

5 réponses

Avatar
MichDenis
Pas sûr d'avoir saisi ce que tu veux faire ... mais pourquoi
ne pas mettre directement les formules dans la feuil2

En A1 de la feuil2, tu inscris :
=SI(Feuil1!BD12>1; Feuil1!BD12;"")

En B1 de la feuil2
=SI(Feuil1!BD12>1; Feuil2!A12;"")

En C1 de la feuil2
=SI(Feuil1!BD12>1;Feuil1!C12;"")

Tu recopies ces formules sur le nombre de lignes requises par ton application.
Si tu dois faire toujours référence à Feuil!BD12 sur toute la plage, tu dois
mettre cette adresse en absolue de cette manière : Feuil1!$BD$12 dans les
formules.

As-tu réellement besoin de copier ces formules à l'aide de VBA... si oui
fais le savoir.



"PhilPhil" a écrit dans le message de groupe de
discussion :
Bonjour la communauté,

Après avoir parcouru en vain les messages précédents, je souhaiterais
obtenir un début de solution à ma demande.

En Français :

Si la valeur de la cellule BD12 de ma feuille 1 est supérieure à 0 alors je
remercie Excel de faire tout seul, comme un grand, un copier de la cellule
BD12 de ma feuille 1 dans la cellule A1 de ma feuille 2, puis de faire un
copier de la cellule A12 de ma feuille 1 pour la coller dans la cellule B1 de
ma feuille 2 et enfin de faire un copier de la cellule C12 de ma feuille 1
dans la cellule C1 de ma feuille 2.
Cette opération est à réaliser sur les cellules BD12 à BD111.

J'ai réussi à le faire avec : If Range("BD12").Value > 0 Then
MAIS cela m'a demandé de le faire 99 fois... en plusieurs codes car la
procédure était trop grande...

En VBA :

J'ai tenté sans succès :

For I = 12 To 111
Set curCell = Worksheets("Feuil1").Cells(I, 56)
If Abs(curCell.Value) > 0 Then
Sheets("Feuil1").Select
Cells(I, 56).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Application.Run "Plannings.xls!Feuil3.Test"
ActiveSheet.Paste
Sheets("Feuil1").Select
Cells(I, 1).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Application.Run "Plannings.xls!Feuil3.Test2"
ActiveSheet.Paste
Sheets("Feuil1").Select
Cells(I, 3).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Application.Run "Plannings.xls!Feuil3.Test3"
ActiveSheet.Paste
Sheets("Feuil1").Select
Next
End If
End Sub

L'Application.Run "Plannings.xls!Feuil3.Test et 2 et 3 sert à trouver la
dernière ligne de la colonne A, B & C.
Il m'indique Next sans For, en message d'erreur...
Et là, c'est le drame...

MERCI d'avance pour votre aide
Avatar
PhilPhil
Bonjour MichDenis,

Cette solution ne convient pas car si la valeur est inférieure à 1 alors je
souhaite mettre BD13 en A1 de mon autre feuille. A condition que BD13 soit
supérieur à 1, sinon je souhaite mettre BD14...

Si BD12>1 alors BD12 en A1 sinon rien en A1
Si BD13>1 alors BD13 en A2 sinon rien en A2

MAIS EGALEMENT

Si BD12<1 alors rien en A1
Si BD13>1 alors BD13 en A1

D'ou la macro qui sert à trouver la dernière ligne pour pouvoir coller les
informations les unes sous les autres.

J'espére avoir été plus clair dans mon explication.

Merci pour votre aide.
Slts.

"MichDenis" a écrit :

Pas sr d'avoir saisi ce que tu veux faire ... mais pourquoi
ne pas mettre directement les formules dans la feuil2

En A1 de la feuil2, tu inscris :
=SI(Feuil1!BD12>1; Feuil1!BD12;"")

En B1 de la feuil2
=SI(Feuil1!BD12>1; Feuil2!A12;"")

En C1 de la feuil2
=SI(Feuil1!BD12>1;Feuil1!C12;"")

Tu recopies ces formules sur le nombre de lignes requises par ton application.
Si tu dois faire toujours rfrence Feuil!BD12 sur toute la plage, tu dois
mettre cette adresse en absolue de cette manire : Feuil1!$BD$12 dans les
formules.

As-tu rellement besoin de copier ces formules l'aide de VBA... si oui
fais le savoir.



"PhilPhil" a crit dans le message de groupe de
discussion :
Bonjour la communaut,

Aprs avoir parcouru en vain les messages prcdents, je souhaiterais
obtenir un dbut de solution ma demande.

En Franais :

Si la valeur de la cellule BD12 de ma feuille 1 est suprieure 0 alors je
remercie Excel de faire tout seul, comme un grand, un copier de la cellule
BD12 de ma feuille 1 dans la cellule A1 de ma feuille 2, puis de faire un
copier de la cellule A12 de ma feuille 1 pour la coller dans la cellule B1 de
ma feuille 2 et enfin de faire un copier de la cellule C12 de ma feuille 1
dans la cellule C1 de ma feuille 2.
Cette opration est raliser sur les cellules BD12 BD111.

J'ai russi le faire avec : If Range("BD12").Value > 0 Then
MAIS cela m'a demand de le faire 99 fois... en plusieurs codes car la
procdure tait trop grande...

En VBA :

J'ai tent sans succs :

For I = 12 To 111
Set curCell = Worksheets("Feuil1").Cells(I, 56)
If Abs(curCell.Value) > 0 Then
Sheets("Feuil1").Select
Cells(I, 56).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Application.Run "Plannings.xls!Feuil3.Test"
ActiveSheet.Paste
Sheets("Feuil1").Select
Cells(I, 1).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Application.Run "Plannings.xls!Feuil3.Test2"
ActiveSheet.Paste
Sheets("Feuil1").Select
Cells(I, 3).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Application.Run "Plannings.xls!Feuil3.Test3"
ActiveSheet.Paste
Sheets("Feuil1").Select
Next
End If
End Sub

L'Application.Run "Plannings.xls!Feuil3.Test et 2 et 3 sert trouver la
dernire ligne de la colonne A, B & C.
Il m'indique Next sans For, en message d'erreur...
Et l, c'est le drame...

MERCI d'avance pour votre aide




Avatar
FFO
Salut à toi

Ton code me suggère une correction

Le If (If Abs(curCell.Value) > 0 Then ) est dans la boucle For/Next
Son End If doit être aussi à l'interieur
Or il est à l'extérieur aprés le Next (End If )

La fin de ton code doit être ainsi :

Sheets("Feuil1").Select
End If
Next
End Sub


Ainsi il ne devrait plus Buguer

Fais des essais et dis moi !!!!!
Avatar
PhilPhil
Bonjour FFO,

Bien vu et merci pour ton aide...

Slts.

"FFO" a écrit :

Salut à toi

Ton code me suggère une correction

Le If (If Abs(curCell.Value) > 0 Then ) est dans la boucle For/Next
Son End If doit être aussi à l'interieur
Or il est à l'extérieur aprés le Next (End If )

La fin de ton code doit être ainsi :

Sheets("Feuil1").Select
End If
Next
End Sub


Ainsi il ne devrait plus Buguer

Fais des essais et dis moi !!!!!



Avatar
MichDenis
Ok PhilPhil, je n'ai jamais vu ton code car j'ai l'habitude de visionner
les messages dans une fenêtre restreinte...conséquence, une partie
de ton message m'a échappé.

Désolé.