Test IF dans une macro
Résolu/Fermé
Mistral_13200
Messages postés
636
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
15 novembre 2024
-
30 déc. 2011 à 09:38
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 2 janv. 2012 à 08:01
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 2 janv. 2012 à 08:01
A voir également:
- Test IF dans une macro
- Test performance pc - Guide
- Test composant pc - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Redmi note 13 5g test - Accueil - Téléphones
- Macro word - Guide
8 réponses
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
30 déc. 2011 à 10:14
30 déc. 2011 à 10:14
Bonjour,
Pasz très claire ta demande, on ne sait pas ce qui te pose problème...
Client4 doit être une cellule nommée, pas une variable.
Là on ne sait pas ce que c'est...
Si c'est une variable autant mettre directement sa valeur dans la cellule :
eric
Pasz très claire ta demande, on ne sait pas ce qui te pose problème...
Client4 doit être une cellule nommée, pas une variable.
Là on ne sait pas ce que c'est...
Si c'est une variable autant mettre directement sa valeur dans la cellule :
If ActiveCell.Offset(-1, 5) = "" Then ActiveCell = "" Else ActiveCell = Client4 End If
eric
Mistral_13200
Messages postés
636
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
15 novembre 2024
4
31 déc. 2011 à 09:41
31 déc. 2011 à 09:41
Bonjour Eric,
Merci pour ta réponse et toutes mes excuses si je nai pas clair.
Je vais préciser les choses. Premièrement ce n'est pas une variable.
Avec
Ce que je souhaiterais c'est écrire la même chose, dans la même cellule mais après un test sur une autre cellule (vide ou pas) de la même feuille étiquette qui est située à X et Y de la cellule à remplir.
J'ose espèrer que c'est un peu plus compréhensible comme ça.
Cordialement
Mistral
Merci pour ta réponse et toutes mes excuses si je nai pas clair.
Je vais préciser les choses. Premièrement ce n'est pas une variable.
Avec
ActiveCell.Formula = "=Client" & Trim(Str(2 * i + 1))je viens écrire dans la cellule sélectionnée à la ligne du dessus la valeur contenue par la cellule nommée "Client(i)"qui se trouve sur une autre feuille du classeur.
Ce que je souhaiterais c'est écrire la même chose, dans la même cellule mais après un test sur une autre cellule (vide ou pas) de la même feuille étiquette qui est située à X et Y de la cellule à remplir.
J'ose espèrer que c'est un peu plus compréhensible comme ça.
Cordialement
Mistral
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
31 déc. 2011 à 10:59
31 déc. 2011 à 10:59
Bonjour,
C'est le test que je t'ai écrit :
If ActiveCell.Offset(-1, 5) = "" Then
(teste 1 ligne au-dessus et 5 colonnes à droite)
Met ce que tu veux après le then et le else
eric
C'est le test que je t'ai écrit :
If ActiveCell.Offset(-1, 5) = "" Then
(teste 1 ligne au-dessus et 5 colonnes à droite)
Met ce que tu veux après le then et le else
eric
Mistral_13200
Messages postés
636
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
15 novembre 2024
4
31 déc. 2011 à 11:30
31 déc. 2011 à 11:30
re,
Je crois qu'encore une fois je n'ai pas été très clair. Car ce que tu me propose est vrai si je fais le teste par macro à chaque fois et ce n'est pas ce que je fais.
La macro que j'ai mis dans mon tout premier message n'est utilisée qu'une seule fois lors de la création de ma feuille d'étiquette. Cette feuille est totalement protégée et ne se rempli qu'au fur et à mesure que l'on rempli un bordereau d'expédition.
ActiveCell.Formula = "=Client" & Trim(Str(2 * i + 1)) me sert qu'une seule fois pour venir écrire dans la cellule sélectée sur la ligne du de dessus ce que j'aurais pu faire manuellement en rentrant dans cette cellule =Client4, par exemple.
Moi ce que je cherche a faire c'est l'équivalent manuel de =SI(E12="";"";"Client4") mais par macro que je pourrais mettre à la suite de ActiveCell.Formula = .......
Tout ça pour m'éviter de rentrer 400 fois la même formule.
D'avance merci pour ton aide.
Mistral
Je crois qu'encore une fois je n'ai pas été très clair. Car ce que tu me propose est vrai si je fais le teste par macro à chaque fois et ce n'est pas ce que je fais.
La macro que j'ai mis dans mon tout premier message n'est utilisée qu'une seule fois lors de la création de ma feuille d'étiquette. Cette feuille est totalement protégée et ne se rempli qu'au fur et à mesure que l'on rempli un bordereau d'expédition.
ActiveCell.Formula = "=Client" & Trim(Str(2 * i + 1)) me sert qu'une seule fois pour venir écrire dans la cellule sélectée sur la ligne du de dessus ce que j'aurais pu faire manuellement en rentrant dans cette cellule =Client4, par exemple.
Moi ce que je cherche a faire c'est l'équivalent manuel de =SI(E12="";"";"Client4") mais par macro que je pourrais mettre à la suite de ActiveCell.Formula = .......
Tout ça pour m'éviter de rentrer 400 fois la même formule.
D'avance merci pour ton aide.
Mistral
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
31 déc. 2011 à 11:42
31 déc. 2011 à 11:42
Toujours embrouillé pour moi...
Ne parle pas de ce que tu as fait mais de ce que tu veux.
Dépose un fichier exemple avec les explications dessus
eric
Ne parle pas de ce que tu as fait mais de ce que tu veux.
Dépose un fichier exemple avec les explications dessus
eric
Mistral_13200
Messages postés
636
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
15 novembre 2024
4
31 déc. 2011 à 13:59
31 déc. 2011 à 13:59
Toutes mes excuses pour être aussi brouillon.
Ci-dessous un lien vers un exemple qui devrait te permettre d'y voir plus clair.
https://www.cjoint.com/?ALFn5y6hXBr
En tout cas merci à toi.
Mistral
Ci-dessous un lien vers un exemple qui devrait te permettre d'y voir plus clair.
https://www.cjoint.com/?ALFn5y6hXBr
En tout cas merci à toi.
Mistral
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié par eriiic le 31/12/2011 à 15:10
Modifié par eriiic le 31/12/2011 à 15:10
Re,
essaie avec ça :
Dim numClient As String
numClient = 1 ' met la formule qui va bien
ActiveCell.FormulaLocal = "=SI(G10="""";"""";Client" & numclient & ")"
Mais vu que tes feuilles d'étiquettes doivent être générée à chaque fois je suppose, je ne vois pas l'intérêt de mettre une formule plutôt que directement la valeur...
eric
essaie avec ça :
Dim numClient As String
numClient = 1 ' met la formule qui va bien
ActiveCell.FormulaLocal = "=SI(G10="""";"""";Client" & numclient & ")"
Mais vu que tes feuilles d'étiquettes doivent être générée à chaque fois je suppose, je ne vois pas l'intérêt de mettre une formule plutôt que directement la valeur...
eric
Mistral_13200
Messages postés
636
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
15 novembre 2024
4
31 déc. 2011 à 15:05
31 déc. 2011 à 15:05
Je vais essayer ce que tu me dis.
De mon côté j'ai essaye ceci
ActiveCell.Formula = "=IF(R[-1]C[5]="""";"""";Club & Trim(Str(2 * i + 1))"
Mais j'ai une Erreur d'execution 1004. Erreur définie par l'application ou par l'objet et je ne parviens pas à m'en sortir.
Peux-tu m'aider
De mon côté j'ai essaye ceci
ActiveCell.Formula = "=IF(R[-1]C[5]="""";"""";Club & Trim(Str(2 * i + 1))"
Mais j'ai une Erreur d'execution 1004. Erreur définie par l'application ou par l'objet et je ne parviens pas à m'en sortir.
Peux-tu m'aider
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié par eriiic le 31/12/2011 à 15:11
Modifié par eriiic le 31/12/2011 à 15:11
ben essaie déjà ce que je t'ai fourni...
J'ai modifié la réponse car j'avais oublié de mettre numClient dans la formule.
eric
J'ai modifié la réponse car j'avais oublié de mettre numClient dans la formule.
eric
Mistral_13200
Messages postés
636
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
15 novembre 2024
4
31 déc. 2011 à 16:58
31 déc. 2011 à 16:58
J'avais rectifié de moi même ...
Mais que se soit avec ta solution ou avec la mienne j'ai la même erreur :
Erreur d'execution 1004. Erreur définie par l'application ou par l'objet.
Bon si tu veux bien on verra ça l'année prochaine.
Je te souhaite une très bonne soirée et tous mes voeux pour 2012
Mistral
Mais que se soit avec ta solution ou avec la mienne j'ai la même erreur :
Erreur d'execution 1004. Erreur définie par l'application ou par l'objet.
Bon si tu veux bien on verra ça l'année prochaine.
Je te souhaite une très bonne soirée et tous mes voeux pour 2012
Mistral
Mistral_13200
Messages postés
636
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
15 novembre 2024
4
2 janv. 2012 à 08:01
2 janv. 2012 à 08:01
Bonjour Eric,
J'ai trouvé la solution elle se trouve ci-dessous :
J'ai adapté ta solution à mes besoins de manière à aller chercher la cellule à tester plus librement.
Merci pour ton aide.
Cordialement
Mistral
J'ai trouvé la solution elle se trouve ci-dessous :
Cells(12 + i * 15 + Int(i / 4) * 2, 5).Select Index = Trim(Str(2 * i + 1)) ActiveCell.FormulaR1C1 = "=IF(R[-1]C[5]="""","""",Nom" & Index & ")"
J'ai adapté ta solution à mes besoins de manière à aller chercher la cellule à tester plus librement.
Merci pour ton aide.
Cordialement
Mistral