Problème avec les cellules vides !
Résolu/Fermé
GUGUSSE2
Messages postés
72
Date d'inscription
mercredi 24 octobre 2007
Statut
Membre
Dernière intervention
1 février 2017
-
Modifié par GUGUSSE2 le 6/09/2012 à 18:08
GUGUSSE2 Messages postés 72 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 1 février 2017 - 8 sept. 2012 à 11:54
GUGUSSE2 Messages postés 72 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 1 février 2017 - 8 sept. 2012 à 11:54
A voir également:
- Problème avec les cellules vides !
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Concatener deux cellules excel - Guide
- Comment supprimer les pages vides sur word - Guide
- Excel compter les cellules de couleur - Guide
10 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
6 sept. 2012 à 20:17
6 sept. 2012 à 20:17
re
bonne suite
Const nomF = "Feuil1" Public Sub essai() With Sheets(nomF) If .[C6] = "" Then .[D8] = 1 Else .[D8] = 2 End If End With End Sub
bonne suite
GUGUSSE2
Messages postés
72
Date d'inscription
mercredi 24 octobre 2007
Statut
Membre
Dernière intervention
1 février 2017
7
6 sept. 2012 à 20:55
6 sept. 2012 à 20:55
Bonjour,
Encore moi!
J'ai tout plein d'interrrogations :
- je ne comprend pas l'utilité de "with sheet(nomF)" puisqu'il n'y a qu'une feuille sur laquelle opèrera la macro et sur laquelle sont situées les cellules à tester.
- il y avait trois cas avec trois actions différentes. Peut-être que je me suis mal exprimé ou que mon énonce comportait une erreur. Le voici formulé d'une autre façon :
SI "C6" vide, alors "D8"=1
sinon
si "C8" vide, alors "D8"=4
sinon
"D7"=2 'j'ai changé "D8" en "D7" pour visualiser car en fait il y aura trois appels de macros (les "1", "2" & "4")
"D8"=4 'comme tu peux le voir, "D8"=4 est exécuté depuis deux endroits différents, c'est peut-être là que j'ai fait une erreur dans l'énoncé du problème !
Fin
J'espère ne pas abuser de ta bonne volonté, mais ce n'est pas facile d'apprendre, uniquement avec "F1" !
Cordialement,
GUGUSSE.
Encore moi!
J'ai tout plein d'interrrogations :
- je ne comprend pas l'utilité de "with sheet(nomF)" puisqu'il n'y a qu'une feuille sur laquelle opèrera la macro et sur laquelle sont situées les cellules à tester.
- il y avait trois cas avec trois actions différentes. Peut-être que je me suis mal exprimé ou que mon énonce comportait une erreur. Le voici formulé d'une autre façon :
SI "C6" vide, alors "D8"=1
sinon
si "C8" vide, alors "D8"=4
sinon
"D7"=2 'j'ai changé "D8" en "D7" pour visualiser car en fait il y aura trois appels de macros (les "1", "2" & "4")
"D8"=4 'comme tu peux le voir, "D8"=4 est exécuté depuis deux endroits différents, c'est peut-être là que j'ai fait une erreur dans l'énoncé du problème !
Fin
J'espère ne pas abuser de ta bonne volonté, mais ce n'est pas facile d'apprendre, uniquement avec "F1" !
Cordialement,
GUGUSSE.
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 7/09/2012 à 10:10
Modifié par ccm81 le 7/09/2012 à 10:10
Q1. l'utilité de "with sheet(nomF)" puisqu'il n'y a qu'une feuille sur laquelle opèrera la macro
Si le code est placé dans le module de la feuille à manipuler, tu n'as effectivement pas besoin du "with sheets(nomF), les références aux cellules se feront alors sans le point par exemple [D6].value = 5 ou simplement [D6]=5
Par contre, si le code est dans un module général (Module 1 par exemple) ou dans le module d'une autre feuille, il est indispensable d'indiquer dans quelle feuille on va opérer, tu as alors le choix entre
sheets(nomF).[D6] ou sheets(nomF).Range("D6") ou sheets(nomF).cells(6,4)
sheets(1).[D6] ou ...
activesheet.[D6] ou ...
comme il va y avoir pas mal d'accès à la feuille de travail, on précise une fois pour toutes la feuille avec with sheets(nomF), les références aux cellules sont alors précédées d'un point .[D6]
ne pas oublier le end with à la fin du traitement
RQ. le fait de mettre le nom de la feuille dans une constante (Const nomF = "Feuil1"), permet en cas de changement du nom de la feuille de n'intervenir qu'une fois, en début de code
Q2. SI "C6" vide, alors "D8"=1
sinon
si "C8" vide, alors "D8"=4
sinon
"D7"=2 '
pas très clair
est ce qu'on doit lire
s'écrira
RQ. il faut soigner la mise en page du code en "indentant" (décalant) les blocs de code selon leur "niveau"
bonne suite
Si le code est placé dans le module de la feuille à manipuler, tu n'as effectivement pas besoin du "with sheets(nomF), les références aux cellules se feront alors sans le point par exemple [D6].value = 5 ou simplement [D6]=5
Par contre, si le code est dans un module général (Module 1 par exemple) ou dans le module d'une autre feuille, il est indispensable d'indiquer dans quelle feuille on va opérer, tu as alors le choix entre
sheets(nomF).[D6] ou sheets(nomF).Range("D6") ou sheets(nomF).cells(6,4)
sheets(1).[D6] ou ...
activesheet.[D6] ou ...
comme il va y avoir pas mal d'accès à la feuille de travail, on précise une fois pour toutes la feuille avec with sheets(nomF), les références aux cellules sont alors précédées d'un point .[D6]
ne pas oublier le end with à la fin du traitement
RQ. le fait de mettre le nom de la feuille dans une constante (Const nomF = "Feuil1"), permet en cas de changement du nom de la feuille de n'intervenir qu'une fois, en début de code
Q2. SI "C6" vide, alors "D8"=1
sinon
si "C8" vide, alors "D8"=4
sinon
"D7"=2 '
pas très clair
est ce qu'on doit lire
Si C6="" alors D8=1 sinon si C8="" alors D8=4 sinon D7=2 fin (du 2° si) fin (du 1° si
s'écrira
if [C6] = "" then [D8] = 1 else if [C8]="" then [D8]=4 else [D7]=2 end if end if
RQ. il faut soigner la mise en page du code en "indentant" (décalant) les blocs de code selon leur "niveau"
bonne suite
GUGUSSE2
Messages postés
72
Date d'inscription
mercredi 24 octobre 2007
Statut
Membre
Dernière intervention
1 février 2017
7
7 sept. 2012 à 11:01
7 sept. 2012 à 11:01
Bonjour,
J'apprécie ta patience.
Le langage écrit joue bien des tours si on ne le connais pas parfaitement !
(je me suis encore mal exprimé, il manque une "écriture" à la fin).
Essayons une autre méthode :
https://www.cjoint.com/?BIhk3U5rV3C
Est-ce limpide ?
Cordialement,
GUGUSE.
J'apprécie ta patience.
Le langage écrit joue bien des tours si on ne le connais pas parfaitement !
(je me suis encore mal exprimé, il manque une "écriture" à la fin).
Essayons une autre méthode :
https://www.cjoint.com/?BIhk3U5rV3C
Est-ce limpide ?
Cordialement,
GUGUSE.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
7 sept. 2012 à 11:15
7 sept. 2012 à 11:15
tout à fait limpide
https://www.cjoint.com/?3Ihln0LHQEZ
bonne suite
https://www.cjoint.com/?3Ihln0LHQEZ
bonne suite
GUGUSSE2
Messages postés
72
Date d'inscription
mercredi 24 octobre 2007
Statut
Membre
Dernière intervention
1 février 2017
7
Modifié par GUGUSSE2 le 7/09/2012 à 11:41
Modifié par GUGUSSE2 le 7/09/2012 à 11:41
Salut,
Il manquait une liaison (voir pièce jointe).
Y a-t-il un moyen plus élégant que d'appeler deux fois
la même macro (symbolisée dans l'exemple par D8=3) ?
https://www.cjoint.com/?BIhlPzMapXT
Sinon, ça marche !
A+,
GUGUSSE.
Il manquait une liaison (voir pièce jointe).
Y a-t-il un moyen plus élégant que d'appeler deux fois
la même macro (symbolisée dans l'exemple par D8=3) ?
https://www.cjoint.com/?BIhlPzMapXT
Sinon, ça marche !
A+,
GUGUSSE.
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 7/09/2012 à 11:58
Modifié par ccm81 le 7/09/2012 à 11:58
Si tu veux que dans le cas ou C6<>"" et C8<>"", Macro3 soit exécutée APRES Macro2, il n'y a rien à faire
sinon (mais ce n'est plus le même organigramme)
bon courage
sinon (mais ce n'est plus le même organigramme)
si C6="" alors Macro1 sinon Macro3 si C8 <> "" alors Macro2 fin fin
bon courage
GUGUSSE2
Messages postés
72
Date d'inscription
mercredi 24 octobre 2007
Statut
Membre
Dernière intervention
1 février 2017
7
7 sept. 2012 à 13:55
7 sept. 2012 à 13:55
Bonjour,
J'ai pas tout compris, mais cela ne fait rien, j'appellerai deux fois ma macro !
Pour en revenir à mon problème précédent (amélioration d'un graphique), comme j'avance peu à peu, je me suis dit qu'un graphe qui ne prendrait que les plages renseignées serait un plus (ta solution N° 4).
Seulement, voilà, j'ai des problèmes pour donner le nom : rien ne correspond à ce que tu écrit.
https://www.cjoint.com/?BIhn2EF00Uv
Et comment donner ces noms au plages du graphique ?
Je travaille avec Excel 2007 et peut-être ne pourras-tu pas me donner la démarche.
Encore merci de ta patience.
Cordialement,
GUGUSSE.
J'ai pas tout compris, mais cela ne fait rien, j'appellerai deux fois ma macro !
Pour en revenir à mon problème précédent (amélioration d'un graphique), comme j'avance peu à peu, je me suis dit qu'un graphe qui ne prendrait que les plages renseignées serait un plus (ta solution N° 4).
Seulement, voilà, j'ai des problèmes pour donner le nom : rien ne correspond à ce que tu écrit.
https://www.cjoint.com/?BIhn2EF00Uv
Et comment donner ces noms au plages du graphique ?
Je travaille avec Excel 2007 et peut-être ne pourras-tu pas me donner la démarche.
Encore merci de ta patience.
Cordialement,
GUGUSSE.
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
7 sept. 2012 à 16:22
7 sept. 2012 à 16:22
1. quand je dis : Si tu veux que dans le cas ou C6<>"" et C8<>"", Macro3 soit exécutée APRES Macro2, il n'y a rien à faire , c'est pour dire que ce que tu as écrit est la seule solution
2. pour les poulies, quelques explications supplémentaires pour définir les plages de données du graphique
https://www.cjoint.com/?3IhquZlpxPC
bonne suite
2. pour les poulies, quelques explications supplémentaires pour définir les plages de données du graphique
https://www.cjoint.com/?3IhquZlpxPC
bonne suite
GUGUSSE2
Messages postés
72
Date d'inscription
mercredi 24 octobre 2007
Statut
Membre
Dernière intervention
1 février 2017
7
8 sept. 2012 à 11:54
8 sept. 2012 à 11:54
Bonjour,
Merci pour tout, tout fonctionne, mais le fichier commence à être un sapin de noël vu les appels aux différentes pages !
J'ai quand même galéré un max pour définir mes plages dynamiquement et créer le graphe qui va avec : cela tenait plus des compétences de Mac GYVER que d'un pro du VBA ! (changement de nom de ton fichier, copie des codes des plages et valeurs dans word, modification (il ne voulait qu'un nom de feuille et pas de classeur !)de ces codes (plus facile que dans Excel !) et réintroduction des codes= OUF !
Tu comprendra que parfois je ne fais pas exprès de ne pas comprendre.
En ce qui concerne mon algorithme, j'ai trouvé la solution :
si C6 vide
alors D8 = "copie 1"
sinon
si C8 non vide
alors D7 = "transfert 2"
fin
D8 = "copie 3"
fin
A+,
cordialement,
GUGUSSE
Merci pour tout, tout fonctionne, mais le fichier commence à être un sapin de noël vu les appels aux différentes pages !
J'ai quand même galéré un max pour définir mes plages dynamiquement et créer le graphe qui va avec : cela tenait plus des compétences de Mac GYVER que d'un pro du VBA ! (changement de nom de ton fichier, copie des codes des plages et valeurs dans word, modification (il ne voulait qu'un nom de feuille et pas de classeur !)de ces codes (plus facile que dans Excel !) et réintroduction des codes= OUF !
Tu comprendra que parfois je ne fais pas exprès de ne pas comprendre.
En ce qui concerne mon algorithme, j'ai trouvé la solution :
si C6 vide
alors D8 = "copie 1"
sinon
si C8 non vide
alors D7 = "transfert 2"
fin
D8 = "copie 3"
fin
A+,
cordialement,
GUGUSSE