Urgent - Macro avec boucle et fonction SI

Le
JeanPi37
bonjour à tous,

Je bute depuis plusieurs jour sur le problème suivant :
Utiliser une macro pour récupérer les valeurs de cellules en ligne d'une
feuille et les coller en colonne dans la feuille 2.

Tout va bien pour les boucles For / Next imbriquées.
Tout va bien aussi si je récupère simplement la valeur.
Mais, comme certaines cellules de la feuille 1 sont vides, le résultat de la
fonction est alors 0.
Pour voir un "blanc", j'essaie d'utiliser - sans succès - une fonction SI
dans la macro.

voici ce que ça donne.
Si quelqu'un à une idée géniale pour résoudre le problème, je suis preneur.

Merci d'avance

Jean PI


ig = 5
For i = 1 To 10

For j = 2 To 11
' Ici, cela fonctionne --> Cells(lig, 2).Value = "='Feuil1'!R" &
valproc & "C" & j & ""

MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
mais elle prend la valeur 0 si la cellule d'origine est vide!

Pour résoudre cela, je voudrais utiliser une fonction SI.

Après quelques test, j'obtiens ceci en affichage:

MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la première ligne

Mais quand j'applique la formule :
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
"<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

J'obtiens :
--
Erreur d'exécution '1004':

Erreur défnie par l'application ou par l'objet

Fin / Débogage / Aide
--
d'ou vient l'erreur SVP ?
Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

Suite de la macro :

Select Case j
Case 2
Proc = lig - 2
Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C1"
Case Else
End Select

lig = lig + 1

Next j

' Traitement des Processus suivants
'
lig = lig + 5
If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

valproc = valproc + 1
Next i

Fin
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacky
Le #17444151
Bonjour,
.... récupérer les valeurs de cellules en ligne d'une feuille et les coller
en colonne dans la feuille 2.


Si j'ai bien compris.......
Ceci récupère les cellules A1:J1 de la feuille 1 (ligne 1)
et colle dans feuille 2 A2:A11 (colonne A)
'------------
Sub jj()
Sheets("Feuil1").Range("A1:J1").Copy
Sheets("Feuil2").[a2].PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:úlse, Transpose:=True
Application.CutCopyMode = False
End Sub
'-----------

--
Salutations
JJ


"JeanPi37" %
bonjour à tous,

Je bute depuis plusieurs jour sur le problème suivant :
Utiliser une macro pour récupérer les valeurs de cellules en ligne d'une
feuille et les coller en colonne dans la feuille 2.

Tout va bien pour les boucles For / Next imbriquées.
Tout va bien aussi si je récupère simplement la valeur.
Mais, comme certaines cellules de la feuille 1 sont vides, le résultat de
la fonction est alors 0.
Pour voir un "blanc", j'essaie d'utiliser - sans succès - une fonction SI
dans la macro.

voici ce que ça donne.
Si quelqu'un à une idée géniale pour résoudre le problème, je suis
preneur.

Merci d'avance

Jean PI
---------------------------------------------------------------------------------------------------------------------

ig = 5
For i = 1 To 10

For j = 2 To 11
' Ici, cela fonctionne --> Cells(lig, 2).Value = "='Feuil1'!R" &
valproc & "C" & j & ""

MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
mais elle prend la valeur 0 si la cellule d'origine est vide!

Pour résoudre cela, je voudrais utiliser une fonction SI.

Après quelques test, j'obtiens ceci en affichage:

MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la première
ligne

Mais quand j'applique la formule :
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
"<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

J'obtiens :
--------------------------------------------
Erreur d'exécution '1004':

Erreur défnie par l'application ou par l'objet

Fin / Débogage / Aide
--------------------------------------------
d'ou vient l'erreur SVP ?
Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

Suite de la macro :

Select Case j
Case 2
Proc = lig - 2
Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C1"
Case Else
End Select

lig = lig + 1

Next j

' Traitement des Processus suivants
' ---------------------------------
lig = lig + 5
If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

valproc = valproc + 1
Next i
---------------------------------------------------------------------------------------------------------------------
Fin


LSteph
Le #17444301
Urgent est mort depuis longtemps!

--
lSteph

JeanPi37 a écrit :
bonjour à tous,

Je bute depuis plusieurs jour sur le problème suivant :
Utiliser une macro pour récupérer les valeurs de cellules en ligne d'une
feuille et les coller en colonne dans la feuille 2.

Tout va bien pour les boucles For / Next imbriquées.
Tout va bien aussi si je récupère simplement la valeur.
Mais, comme certaines cellules de la feuille 1 sont vides, le résultat
de la fonction est alors 0.
Pour voir un "blanc", j'essaie d'utiliser - sans succès - une fonction
SI dans la macro.

voici ce que ça donne.
Si quelqu'un à une idée géniale pour résoudre le problème, je suis preneur.

Merci d'avance

Jean PI
---------------------------------------------------------------------------------------------------------------------


ig = 5
For i = 1 To 10

For j = 2 To 11
' Ici, cela fonctionne --> Cells(lig, 2).Value = "='Feuil1'!R" &
valproc & "C" & j & ""

MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
mais elle prend la valeur 0 si la cellule d'origine est vide!

Pour résoudre cela, je voudrais utiliser une fonction SI.

Après quelques test, j'obtiens ceci en affichage:

MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la première ligne

Mais quand j'applique la formule :
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
"<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

J'obtiens :
--------------------------------------------
Erreur d'exécution '1004':

Erreur défnie par l'application ou par l'objet

Fin / Débogage / Aide
--------------------------------------------
d'ou vient l'erreur SVP ?
Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

Suite de la macro :

Select Case j
Case 2
Proc = lig - 2
Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C1"
Case Else
End Select

lig = lig + 1

Next j

' Traitement des Processus suivants
' ---------------------------------
lig = lig + 5
If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

valproc = valproc + 1
Next i
---------------------------------------------------------------------------------------------------------------------

Fin


JeanPi37
Le #17453671
Merci Jacky pour ton aide précieuse.

je n'ai plus qu'à mettre ta solution dans ma boucle et je pourrai faire la
feuille d'un coup.

c'est super et... pourquoi faire simple quand on peut faire compliqué :)

Cordialement

Jean Pi


"Jacky" news:
Bonjour,
.... récupérer les valeurs de cellules en ligne d'une feuille et les
coller en colonne dans la feuille 2.


Si j'ai bien compris.......
Ceci récupère les cellules A1:J1 de la feuille 1 (ligne 1)
et colle dans feuille 2 A2:A11 (colonne A)
'------------
Sub jj()
Sheets("Feuil1").Range("A1:J1").Copy
Sheets("Feuil2").[a2].PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:úlse, Transpose:=True
Application.CutCopyMode = False
End Sub
'-----------

--
Salutations
JJ


"JeanPi37" news: %
bonjour à tous,

Je bute depuis plusieurs jour sur le problème suivant :
Utiliser une macro pour récupérer les valeurs de cellules en ligne d'une
feuille et les coller en colonne dans la feuille 2.

Tout va bien pour les boucles For / Next imbriquées.
Tout va bien aussi si je récupère simplement la valeur.
Mais, comme certaines cellules de la feuille 1 sont vides, le résultat de
la fonction est alors 0.
Pour voir un "blanc", j'essaie d'utiliser - sans succès - une fonction SI
dans la macro.

voici ce que ça donne.
Si quelqu'un à une idée géniale pour résoudre le problème, je suis
preneur.

Merci d'avance

Jean PI
---------------------------------------------------------------------------------------------------------------------

ig = 5
For i = 1 To 10

For j = 2 To 11
' Ici, cela fonctionne --> Cells(lig, 2).Value = "='Feuil1'!R" &
valproc & "C" & j & ""

MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
mais elle prend la valeur 0 si la cellule d'origine est vide!

Pour résoudre cela, je voudrais utiliser une fonction SI.

Après quelques test, j'obtiens ceci en affichage:

MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la première
ligne

Mais quand j'applique la formule :
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
"<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

J'obtiens :
--------------------------------------------
Erreur d'exécution '1004':

Erreur défnie par l'application ou par l'objet

Fin / Débogage / Aide
--------------------------------------------
d'ou vient l'erreur SVP ?
Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

Suite de la macro :

Select Case j
Case 2
Proc = lig - 2
Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C1"
Case Else
End Select

lig = lig + 1

Next j

' Traitement des Processus suivants
' ---------------------------------
lig = lig + 5
If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

valproc = valproc + 1
Next i
---------------------------------------------------------------------------------------------------------------------
Fin







JeanPi37
Le #17453881
Jacky (et tout autre lecteur)

Je viens de tester
Effectivement cela fonctionne bien mais ça ne correspond pas à ce dont j'ai
besoin.
Je veux effectivement une formule qui affiche le contenu de sa cellule de
référence ou rien si cette cellule est vide.
Dans ton exemple, on doit tout refaire à chaque fois. Or ces cellules seront
bloquées après le développement.

La grande question est : pourquoi une fonction simple passe et pas une
fonction SI

Le message d'erreur est peu explicite.

A bientôt j'espère.


Jean Pi




"Jacky" news:
Bonjour,
.... récupérer les valeurs de cellules en ligne d'une feuille et les
coller en colonne dans la feuille 2.


Si j'ai bien compris.......
Ceci récupère les cellules A1:J1 de la feuille 1 (ligne 1)
et colle dans feuille 2 A2:A11 (colonne A)
'------------
Sub jj()
Sheets("Feuil1").Range("A1:J1").Copy
Sheets("Feuil2").[a2].PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:úlse, Transpose:=True
Application.CutCopyMode = False
End Sub
'-----------

--
Salutations
JJ


"JeanPi37" news: %
bonjour à tous,

Je bute depuis plusieurs jour sur le problème suivant :
Utiliser une macro pour récupérer les valeurs de cellules en ligne d'une
feuille et les coller en colonne dans la feuille 2.

Tout va bien pour les boucles For / Next imbriquées.
Tout va bien aussi si je récupère simplement la valeur.
Mais, comme certaines cellules de la feuille 1 sont vides, le résultat de
la fonction est alors 0.
Pour voir un "blanc", j'essaie d'utiliser - sans succès - une fonction SI
dans la macro.

voici ce que ça donne.
Si quelqu'un à une idée géniale pour résoudre le problème, je suis
preneur.

Merci d'avance

Jean PI
---------------------------------------------------------------------------------------------------------------------

ig = 5
For i = 1 To 10

For j = 2 To 11
' Ici, cela fonctionne --> Cells(lig, 2).Value = "='Feuil1'!R" &
valproc & "C" & j & ""

MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
mais elle prend la valeur 0 si la cellule d'origine est vide!

Pour résoudre cela, je voudrais utiliser une fonction SI.

Après quelques test, j'obtiens ceci en affichage:

MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la première
ligne

Mais quand j'applique la formule :
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
"<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

J'obtiens :
--------------------------------------------
Erreur d'exécution '1004':

Erreur défnie par l'application ou par l'objet

Fin / Débogage / Aide
--------------------------------------------
d'ou vient l'erreur SVP ?
Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

Suite de la macro :

Select Case j
Case 2
Proc = lig - 2
Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C1"
Case Else
End Select

lig = lig + 1

Next j

' Traitement des Processus suivants
' ---------------------------------
lig = lig + 5
If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

valproc = valproc + 1
Next i
---------------------------------------------------------------------------------------------------------------------
Fin







Jacky
Le #17455451
Re...
Donne un exemple de l'organisation du fichier et du résultat souhaité

--
Salutations
JJ


"JeanPi37"
Jacky (et tout autre lecteur)

Je viens de tester
Effectivement cela fonctionne bien mais ça ne correspond pas à ce dont
j'ai besoin.
Je veux effectivement une formule qui affiche le contenu de sa cellule de
référence ou rien si cette cellule est vide.
Dans ton exemple, on doit tout refaire à chaque fois. Or ces cellules
seront bloquées après le développement.

La grande question est : pourquoi une fonction simple passe et pas une
fonction SI

Le message d'erreur est peu explicite.

A bientôt j'espère.


Jean Pi




"Jacky" news:
Bonjour,
.... récupérer les valeurs de cellules en ligne d'une feuille et les
coller en colonne dans la feuille 2.


Si j'ai bien compris.......
Ceci récupère les cellules A1:J1 de la feuille 1 (ligne 1)
et colle dans feuille 2 A2:A11 (colonne A)
'------------
Sub jj()
Sheets("Feuil1").Range("A1:J1").Copy
Sheets("Feuil2").[a2].PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:úlse, Transpose:=True
Application.CutCopyMode = False
End Sub
'-----------

--
Salutations
JJ


"JeanPi37" news: %
bonjour à tous,

Je bute depuis plusieurs jour sur le problème suivant :
Utiliser une macro pour récupérer les valeurs de cellules en ligne d'une
feuille et les coller en colonne dans la feuille 2.

Tout va bien pour les boucles For / Next imbriquées.
Tout va bien aussi si je récupère simplement la valeur.
Mais, comme certaines cellules de la feuille 1 sont vides, le résultat
de la fonction est alors 0.
Pour voir un "blanc", j'essaie d'utiliser - sans succès - une fonction
SI dans la macro.

voici ce que ça donne.
Si quelqu'un à une idée géniale pour résoudre le problème, je suis
preneur.

Merci d'avance

Jean PI
---------------------------------------------------------------------------------------------------------------------

ig = 5
For i = 1 To 10

For j = 2 To 11
' Ici, cela fonctionne --> Cells(lig, 2).Value = "='Feuil1'!R" &
valproc & "C" & j & ""

MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
mais elle prend la valeur 0 si la cellule d'origine est vide!

Pour résoudre cela, je voudrais utiliser une fonction SI.

Après quelques test, j'obtiens ceci en affichage:

MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la première
ligne

Mais quand j'applique la formule :
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
"<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

J'obtiens :
--------------------------------------------
Erreur d'exécution '1004':

Erreur défnie par l'application ou par l'objet

Fin / Débogage / Aide
--------------------------------------------
d'ou vient l'erreur SVP ?
Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

Suite de la macro :

Select Case j
Case 2
Proc = lig - 2
Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C1"
Case Else
End Select

lig = lig + 1

Next j

' Traitement des Processus suivants
' ---------------------------------
lig = lig + 5
If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

valproc = valproc + 1
Next i
---------------------------------------------------------------------------------------------------------------------
Fin










lSteph
Le #17457271
Bonjour,

Pas besoin de macro!
dans Feuil2 Sélectionner [A2:A11]
puis entrer une fois pour toutes cette formule en matricielle:

=TRANSPOSE(SI(Feuil1!$A$1:$J$1="";"";Feuil1!$A$1:$J$1))

valider par ctrl+maj+entrée

--
lSteph

'------------
Sub jj()
Sheets("Feuil1").Range("A1:J1").Copy
Sheets("Feuil2").[a2].PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone,
SkipBlanks:úlse, Transpose:=True
Application.CutCopyMode = False
End Sub
'-----------



On 8 oct, 02:56, "JeanPi37"
Jacky (et tout autre lecteur)

Je viens de tester
Effectivement cela fonctionne bien mais ça ne correspond pas à ce don t j'ai
besoin.
Je veux effectivement une formule qui affiche le contenu de sa cellule de
référence ou rien si cette cellule est vide.
Dans ton exemple, on doit tout refaire à chaque fois. Or ces cellules s eront
bloquées après le développement.

La grande question est : pourquoi une fonction simple passe et pas une
fonction SI

Le message d'erreur est peu explicite.

A bientôt j'espère.

Jean Pi

"Jacky"
> Bonjour,
>>.... récupérer les valeurs de cellules en ligne d'une feuille et le s
>>coller en colonne dans la feuille 2.
> Si j'ai bien compris.......
> Ceci récupère les cellules A1:J1 de la feuille 1 (ligne 1)
> et colle dans feuille 2 A2:A11 (colonne A)
> '------------
> Sub jj()
> Sheets("Feuil1").Range("A1:J1").Copy
> Sheets("Feuil2").[a2].PasteSpecial Paste:=xlPasteAll, Operation:=xl None,
> SkipBlanks:úlse, Transpose:=True
> Application.CutCopyMode = False
> End Sub
> '-----------

> --
> Salutations
> JJ

> "JeanPi37" >news: %23RdH99AKJHA.5__BEGIN_MASK_n#9g02mG7!__...__END_MASK_i?a63jfAD$z_
>> bonjour à tous,

>> Je bute depuis plusieurs jour sur le problème suivant :
>> Utiliser une macro pour récupérer les valeurs de cellules en ligne d'une
>> feuille et les coller en colonne dans la feuille 2.

>> Tout va bien pour les boucles For / Next imbriquées.
>> Tout va bien aussi si je récupère simplement la valeur.
>> Mais, comme certaines cellules de la feuille 1 sont vides, le résult at de
>> la fonction est alors 0.
>> Pour voir un "blanc", j'essaie d'utiliser - sans succès - une foncti on SI
>> dans la macro.

>> voici ce que ça donne.
>> Si quelqu'un à une idée géniale pour résoudre le problème, j e suis
>> preneur.

>> Merci d'avance

>> Jean PI
>> ---------------------------------------------------------------------- -----------------------------------------------

>> ig = 5
>> For i = 1 To 10

>>    For j = 2 To 11
>>        ' Ici, cela fonctionne --> Cells(lig, 2).Value = "= 'Feuil1'!R" &
>> valproc & "C" & j & ""

>> MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
>> Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

>> La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
>> mais elle prend la valeur 0 si la cellule d'origine est vide!

>> Pour résoudre cela, je voudrais utiliser une fonction SI.

>> Après quelques test, j'obtiens ceci en affichage:

>>        MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""" ;" &
>> "'Feuil1'!R" & valproc & "C" & j & "; """")"
>> soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la premi ère
>> ligne

>> Mais quand j'applique la formule :
>>        Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
>> "<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

>> J'obtiens :
>> --------------------------------------------
>> Erreur d'exécution '1004':

>> Erreur défnie par l'application ou par l'objet

>> Fin / Débogage / Aide
>> --------------------------------------------
>> d'ou vient l'erreur SVP ?
>> Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

>> Suite de la macro :

>>        Select Case j
>>        Case 2
>>        Proc = lig - 2
>>        Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C 1"
>>        Case Else
>>        End Select

>>  lig = lig + 1

>>    Next j

>> ' Traitement des Processus suivants
>> ' ---------------------------------
>> lig = lig + 5
>> If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

>> valproc = valproc + 1
>> Next i
>> ---------------------------------------------------------------------- -----------------------------------------------
>> Fin


JeanPi37
Le #17466131
Merci à vous deux.

Effectivement, la formule matricielle fait gagner beaucoup de temps.

Cela dit, pour répondre à Jacky et pour essayer de comprendre ce qui
n'allait pas, voici l'organisation de mon fichier.

Sur la Feuil1, j'ai 20 éléments (Chef) qui en contiennent chacun 10
(Sous-Chef) qui en contiennent eux-mêmes chacun 10 (Employés).
Les Sous-Chefs sont en colonne et les Eployés sont en ligne pour chaque
Sous-Chef.
Ce sont les Employés qui m'intéressent d'abord pour l'automatisation en
macro.
J'ai créé 20 feuilles qui ont chacune 10 x 10 éléments
Dans ma macro, je veux automatiser le remplissage des 10 x 10 cellules avec
ma fameuse fonction SI, et ce dans chacune des 20 feuilles.

A chaque passage, je renseigne d'abord la référence au sous-chef, puis les
références aux 10 employés de mes sous chefs.
Ceci, jusqu'à ce que les 10 sous-chefs et les 100 employés soient renseignés
(et ceci 20 fois).

Donc, je rappelle que dans la boucle (et même pour un seul),
ceci fonctionne :
Cells(lig, 2).Value = "='Feuil1'!R" & valproc & "C" & j & ""

Mais la fonction si
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
Ne fonctionne pas.
Pourtant, l'affichage dans une MsgBox ne montre pas d'erreur.

La fonction SI est-elle incompatible avec .Value ?
Ou bien ais-je une erreur quelque part ?


Merci encore en tout cas puisque la formule matricielle m'aide beaucoup.
Comme cela peut me servir pour cette application ou pour plus tard, si vous
avez la réponse, j'aimerais "ne pas mourir idiot".


Bien à vous.

Jean Pi




"JeanPi37" news:
Jacky (et tout autre lecteur)

Je viens de tester
Effectivement cela fonctionne bien mais ça ne correspond pas à ce dont
j'ai besoin.
Je veux effectivement une formule qui affiche le contenu de sa cellule de
référence ou rien si cette cellule est vide.
Dans ton exemple, on doit tout refaire à chaque fois. Or ces cellules
seront bloquées après le développement.

La grande question est : pourquoi une fonction simple passe et pas une
fonction SI

Le message d'erreur est peu explicite.

A bientôt j'espère.


Jean Pi




"Jacky" news:
Bonjour,
.... récupérer les valeurs de cellules en ligne d'une feuille et les
coller en colonne dans la feuille 2.


Si j'ai bien compris.......
Ceci récupère les cellules A1:J1 de la feuille 1 (ligne 1)
et colle dans feuille 2 A2:A11 (colonne A)
'------------
Sub jj()
Sheets("Feuil1").Range("A1:J1").Copy
Sheets("Feuil2").[a2].PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:úlse, Transpose:=True
Application.CutCopyMode = False
End Sub
'-----------

--
Salutations
JJ


"JeanPi37" news: %
bonjour à tous,

Je bute depuis plusieurs jour sur le problème suivant :
Utiliser une macro pour récupérer les valeurs de cellules en ligne d'une
feuille et les coller en colonne dans la feuille 2.

Tout va bien pour les boucles For / Next imbriquées.
Tout va bien aussi si je récupère simplement la valeur.
Mais, comme certaines cellules de la feuille 1 sont vides, le résultat
de la fonction est alors 0.
Pour voir un "blanc", j'essaie d'utiliser - sans succès - une fonction
SI dans la macro.

voici ce que ça donne.
Si quelqu'un à une idée géniale pour résoudre le problème, je suis
preneur.

Merci d'avance

Jean PI
---------------------------------------------------------------------------------------------------------------------

ig = 5
For i = 1 To 10

For j = 2 To 11
' Ici, cela fonctionne --> Cells(lig, 2).Value = "='Feuil1'!R" &
valproc & "C" & j & ""

MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
mais elle prend la valeur 0 si la cellule d'origine est vide!

Pour résoudre cela, je voudrais utiliser une fonction SI.

Après quelques test, j'obtiens ceci en affichage:

MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la première
ligne

Mais quand j'applique la formule :
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
"<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

J'obtiens :
--------------------------------------------
Erreur d'exécution '1004':

Erreur défnie par l'application ou par l'objet

Fin / Débogage / Aide
--------------------------------------------
d'ou vient l'erreur SVP ?
Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

Suite de la macro :

Select Case j
Case 2
Proc = lig - 2
Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C1"
Case Else
End Select

lig = lig + 1

Next j

' Traitement des Processus suivants
' ---------------------------------
lig = lig + 5
If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

valproc = valproc + 1
Next i
---------------------------------------------------------------------------------------------------------------------
Fin










Jacky
Le #17467031
Re...
Ou bien ais-je une erreur quelque part ?


valproc = ?????
En restant dans les ref "R1C1"
Il cause en anglais vba. (Si=If et le point virgule= virgule)
Cells(lig, 2).FormulaR1C1 = "=If('Feuil1'!R" & valproc & "C" & j &
"<>""""," & "'Feuil1'!R" & valproc & "C" & j & ", """")"

--
Salutations
JJ


"JeanPi37"
Merci à vous deux.

Effectivement, la formule matricielle fait gagner beaucoup de temps.

Cela dit, pour répondre à Jacky et pour essayer de comprendre ce qui
n'allait pas, voici l'organisation de mon fichier.

Sur la Feuil1, j'ai 20 éléments (Chef) qui en contiennent chacun 10
(Sous-Chef) qui en contiennent eux-mêmes chacun 10 (Employés).
Les Sous-Chefs sont en colonne et les Eployés sont en ligne pour chaque
Sous-Chef.
Ce sont les Employés qui m'intéressent d'abord pour l'automatisation en
macro.
J'ai créé 20 feuilles qui ont chacune 10 x 10 éléments
Dans ma macro, je veux automatiser le remplissage des 10 x 10 cellules
avec ma fameuse fonction SI, et ce dans chacune des 20 feuilles.

A chaque passage, je renseigne d'abord la référence au sous-chef, puis les
références aux 10 employés de mes sous chefs.
Ceci, jusqu'à ce que les 10 sous-chefs et les 100 employés soient
renseignés (et ceci 20 fois).

Donc, je rappelle que dans la boucle (et même pour un seul),
ceci fonctionne :
Cells(lig, 2).Value = "='Feuil1'!R" & valproc & "C" & j & ""

Mais la fonction si
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
Ne fonctionne pas.
Pourtant, l'affichage dans une MsgBox ne montre pas d'erreur.

La fonction SI est-elle incompatible avec .Value ?
Ou bien ais-je une erreur quelque part ?


Merci encore en tout cas puisque la formule matricielle m'aide beaucoup.
Comme cela peut me servir pour cette application ou pour plus tard, si
vous avez la réponse, j'aimerais "ne pas mourir idiot".


Bien à vous.

Jean Pi




"JeanPi37" news:
Jacky (et tout autre lecteur)

Je viens de tester
Effectivement cela fonctionne bien mais ça ne correspond pas à ce dont
j'ai besoin.
Je veux effectivement une formule qui affiche le contenu de sa cellule de
référence ou rien si cette cellule est vide.
Dans ton exemple, on doit tout refaire à chaque fois. Or ces cellules
seront bloquées après le développement.

La grande question est : pourquoi une fonction simple passe et pas une
fonction SI

Le message d'erreur est peu explicite.

A bientôt j'espère.


Jean Pi




"Jacky" news:
Bonjour,
.... récupérer les valeurs de cellules en ligne d'une feuille et les
coller en colonne dans la feuille 2.


Si j'ai bien compris.......
Ceci récupère les cellules A1:J1 de la feuille 1 (ligne 1)
et colle dans feuille 2 A2:A11 (colonne A)
'------------
Sub jj()
Sheets("Feuil1").Range("A1:J1").Copy
Sheets("Feuil2").[a2].PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:úlse, Transpose:=True
Application.CutCopyMode = False
End Sub
'-----------

--
Salutations
JJ


"JeanPi37" news: %
bonjour à tous,

Je bute depuis plusieurs jour sur le problème suivant :
Utiliser une macro pour récupérer les valeurs de cellules en ligne
d'une feuille et les coller en colonne dans la feuille 2.

Tout va bien pour les boucles For / Next imbriquées.
Tout va bien aussi si je récupère simplement la valeur.
Mais, comme certaines cellules de la feuille 1 sont vides, le résultat
de la fonction est alors 0.
Pour voir un "blanc", j'essaie d'utiliser - sans succès - une fonction
SI dans la macro.

voici ce que ça donne.
Si quelqu'un à une idée géniale pour résoudre le problème, je suis
preneur.

Merci d'avance

Jean PI
---------------------------------------------------------------------------------------------------------------------

ig = 5
For i = 1 To 10

For j = 2 To 11
' Ici, cela fonctionne --> Cells(lig, 2).Value = "='Feuil1'!R" &
valproc & "C" & j & ""

MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
mais elle prend la valeur 0 si la cellule d'origine est vide!

Pour résoudre cela, je voudrais utiliser une fonction SI.

Après quelques test, j'obtiens ceci en affichage:

MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la première
ligne

Mais quand j'applique la formule :
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
"<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

J'obtiens :
--------------------------------------------
Erreur d'exécution '1004':

Erreur défnie par l'application ou par l'objet

Fin / Débogage / Aide
--------------------------------------------
d'ou vient l'erreur SVP ?
Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

Suite de la macro :

Select Case j
Case 2
Proc = lig - 2
Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C1"
Case Else
End Select

lig = lig + 1

Next j

' Traitement des Processus suivants
' ---------------------------------
lig = lig + 5
If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

valproc = valproc + 1
Next i
---------------------------------------------------------------------------------------------------------------------
Fin













JeanPi37
Le #17478311
Bravo !

C'était effectivement la solution.
J'ai pu finaliser et modifier en une seule exécution l'ensemble des cellules
concernées sur les 20 feuilles.

Encore merci

Jean Pi




"Jacky" news:ex%23$
Re...
Ou bien ais-je une erreur quelque part ?


valproc = ?????
En restant dans les ref "R1C1"
Il cause en anglais vba. (Si=If et le point virgule= virgule)
Cells(lig, 2).FormulaR1C1 = "=If('Feuil1'!R" & valproc & "C" & j &
"<>""""," & "'Feuil1'!R" & valproc & "C" & j & ", """")"

--
Salutations
JJ


"JeanPi37" news:
Merci à vous deux.

Effectivement, la formule matricielle fait gagner beaucoup de temps.

Cela dit, pour répondre à Jacky et pour essayer de comprendre ce qui
n'allait pas, voici l'organisation de mon fichier.

Sur la Feuil1, j'ai 20 éléments (Chef) qui en contiennent chacun 10
(Sous-Chef) qui en contiennent eux-mêmes chacun 10 (Employés).
Les Sous-Chefs sont en colonne et les Eployés sont en ligne pour chaque
Sous-Chef.
Ce sont les Employés qui m'intéressent d'abord pour l'automatisation en
macro.
J'ai créé 20 feuilles qui ont chacune 10 x 10 éléments
Dans ma macro, je veux automatiser le remplissage des 10 x 10 cellules
avec ma fameuse fonction SI, et ce dans chacune des 20 feuilles.

A chaque passage, je renseigne d'abord la référence au sous-chef, puis
les références aux 10 employés de mes sous chefs.
Ceci, jusqu'à ce que les 10 sous-chefs et les 100 employés soient
renseignés (et ceci 20 fois).

Donc, je rappelle que dans la boucle (et même pour un seul),
ceci fonctionne :
Cells(lig, 2).Value = "='Feuil1'!R" & valproc & "C" & j & ""

Mais la fonction si
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
Ne fonctionne pas.
Pourtant, l'affichage dans une MsgBox ne montre pas d'erreur.

La fonction SI est-elle incompatible avec .Value ?
Ou bien ais-je une erreur quelque part ?


Merci encore en tout cas puisque la formule matricielle m'aide beaucoup.
Comme cela peut me servir pour cette application ou pour plus tard, si
vous avez la réponse, j'aimerais "ne pas mourir idiot".


Bien à vous.

Jean Pi




"JeanPi37" news:
Jacky (et tout autre lecteur)

Je viens de tester
Effectivement cela fonctionne bien mais ça ne correspond pas à ce dont
j'ai besoin.
Je veux effectivement une formule qui affiche le contenu de sa cellule
de référence ou rien si cette cellule est vide.
Dans ton exemple, on doit tout refaire à chaque fois. Or ces cellules
seront bloquées après le développement.

La grande question est : pourquoi une fonction simple passe et pas une
fonction SI

Le message d'erreur est peu explicite.

A bientôt j'espère.


Jean Pi




"Jacky" news:
Bonjour,
.... récupérer les valeurs de cellules en ligne d'une feuille et les
coller en colonne dans la feuille 2.


Si j'ai bien compris.......
Ceci récupère les cellules A1:J1 de la feuille 1 (ligne 1)
et colle dans feuille 2 A2:A11 (colonne A)
'------------
Sub jj()
Sheets("Feuil1").Range("A1:J1").Copy
Sheets("Feuil2").[a2].PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:úlse, Transpose:=True
Application.CutCopyMode = False
End Sub
'-----------

--
Salutations
JJ


"JeanPi37" news: %
bonjour à tous,

Je bute depuis plusieurs jour sur le problème suivant :
Utiliser une macro pour récupérer les valeurs de cellules en ligne
d'une feuille et les coller en colonne dans la feuille 2.

Tout va bien pour les boucles For / Next imbriquées.
Tout va bien aussi si je récupère simplement la valeur.
Mais, comme certaines cellules de la feuille 1 sont vides, le résultat
de la fonction est alors 0.
Pour voir un "blanc", j'essaie d'utiliser - sans succès - une fonction
SI dans la macro.

voici ce que ça donne.
Si quelqu'un à une idée géniale pour résoudre le problème, je suis
preneur.

Merci d'avance

Jean PI
---------------------------------------------------------------------------------------------------------------------

ig = 5
For i = 1 To 10

For j = 2 To 11
' Ici, cela fonctionne --> Cells(lig, 2).Value = "='Feuil1'!R"
& valproc & "C" & j & ""

MsgBox "='Feuil1'!R" & valproc & "C" & j & ""
Affiche ='Feuil1'!R6C2 (donc ce qui est attendu)

La cellule prend à chaque fois la valeur de la cellule de la Feuil1,
mais elle prend la valeur 0 si la cellule d'origine est vide!

Pour résoudre cela, je voudrais utiliser une fonction SI.

Après quelques test, j'obtiens ceci en affichage:

MsgBox "=si('Feuil1'!R" & valproc & "C" & j & "<>"""";" &
"'Feuil1'!R" & valproc & "C" & j & "; """")"
soit bien : =si('Feuil1'!R6C2<>"";'Feuil1'!R6C2;""), pour la première
ligne

Mais quand j'applique la formule :
Cells(lig, 2).Value = "=si('Feuil1'!R" & valproc & "C" & j &
"<>"""";" & "'Feuil1'!R" & valproc & "C" & j & "; """")"

J'obtiens :
--------------------------------------------
Erreur d'exécution '1004':

Erreur défnie par l'application ou par l'objet

Fin / Débogage / Aide
--------------------------------------------
d'ou vient l'erreur SVP ?
Merci de votre aide "rapide" :) car j'ai 2000 cellules à modifier !

Suite de la macro :

Select Case j
Case 2
Proc = lig - 2
Cells(Proc, 3).Value = "='Feuil1'!R" & valproc & "C1"
Case Else
End Select

lig = lig + 1

Next j

' Traitement des Processus suivants
' ---------------------------------
lig = lig + 5
If lig <= 140 Then Cells(lig - 1, 2).Value = "SP"

valproc = valproc + 1
Next i
---------------------------------------------------------------------------------------------------------------------
Fin

















Publicité
Poster une réponse
Anonyme