Pb VBA Ecrire dans la cellule du dessous
Résolu/Fermé
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
-
2 avril 2008 à 10:38
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 4 avril 2008 à 16:35
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 4 avril 2008 à 16:35
A voir également:
- Vba ecrire dans une cellule
- Aller à la ligne dans une cellule excel - Guide
- Ecrire en gras sur whatsapp - Guide
- Excel cellule couleur si condition texte - Guide
- Excel compter cellule couleur sans vba - Guide
- Ecrire en miroir - Guide
14 réponses
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
2 avril 2008 à 21:04
2 avril 2008 à 21:04
Bonsoir,
Juste en passant, pour les "textbox" c'est pareil il faut juste faire attention à la colonne (certainement différente de "A") et la ligne :
If TypeName(Ctrl) = "CheckBox" Then .... devient : If TypeName(Ctrl) = "Textbox 1" Then
Juste en passant, pour les "textbox" c'est pareil il faut juste faire attention à la colonne (certainement différente de "A") et la ligne :
If TypeName(Ctrl) = "CheckBox" Then .... devient : If TypeName(Ctrl) = "Textbox 1" Then
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
3 avril 2008 à 11:41
3 avril 2008 à 11:41
Bonjour,
Vous avez parlé de Textbox 1,2,3 ......est ce que le nom est correct dans la ligne If TypeName(Ctrl)=.....
Vous avez parlé de Textbox 1,2,3 ......est ce que le nom est correct dans la ligne If TypeName(Ctrl)=.....
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
3 avril 2008 à 11:52
3 avril 2008 à 11:52
En effet TextBox tout court était peut être insuffisant, je viens donc de modifier par TexTbox1 (le nom générique) pour voir si cela marche déja sur la 1.
Mais rien de plus ne se produit...
Pour moi le problème pourrait venir de:
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "TextBox1" Then
C'est un code que j'avai récupérer et donc je ne le maitrise pas à 100% mais ce petit bout de code là je ne le comprend absolument pas.
Le problème pourrait il venir de là ?
Mais rien de plus ne se produit...
Pour moi le problème pourrait venir de:
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "TextBox1" Then
C'est un code que j'avai récupérer et donc je ne le maitrise pas à 100% mais ce petit bout de code là je ne le comprend absolument pas.
Le problème pourrait il venir de là ?
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
>
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
3 avril 2008 à 13:46
3 avril 2008 à 13:46
Bonjour,
J'ai pensé que vos "CheckBox, TextBox" se trouvaient sur un "userForm" et je viens de me rendre compte que ce n'est pas le cas probablement et qu'ils sont directement sur la feuille........merci de me le préciser ?
C'est aussi possible de mettre une copie du classeur sur https://www.cjoint.com/ se sera plus facile de vous aider.
J'attends....
Salutations.
Jean-Pierre
J'ai pensé que vos "CheckBox, TextBox" se trouvaient sur un "userForm" et je viens de me rendre compte que ce n'est pas le cas probablement et qu'ils sont directement sur la feuille........merci de me le préciser ?
C'est aussi possible de mettre une copie du classeur sur https://www.cjoint.com/ se sera plus facile de vous aider.
J'attends....
Salutations.
Jean-Pierre
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
>
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
3 avril 2008 à 16:04
3 avril 2008 à 16:04
Non non c'est bien dans une userform.
Alors je passe ici mon document complet: https://www.cjoint.com/?edqeice0te
La Userform en question est celles qui sont nommé Technicien et Sous-traitant.
Sur beaucoup d'autre UserForm il y a des checkbox avec le code que j'ai inscrit plus haut.
Si vous préferez je fais une petite version allégé.
Cordialement,
Grobibi34
Alors je passe ici mon document complet: https://www.cjoint.com/?edqeice0te
La Userform en question est celles qui sont nommé Technicien et Sous-traitant.
Sur beaucoup d'autre UserForm il y a des checkbox avec le code que j'ai inscrit plus haut.
Si vous préferez je fais une petite version allégé.
Cordialement,
Grobibi34
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
3 avril 2008 à 15:57
3 avril 2008 à 15:57
Bonjour,
Je viens d'exécuter un petit test sur le code proposé et j'ai un sérieux doute sur son fonctionnement car l'instruction
r = Range("a9").End(xlDown).Row + 1 pointe vers la ligne 65537 se qui correspond à la dernière ligne d'une feuille ......pas possible de mettre des données.....
Merci de votre réponse.
Je viens d'exécuter un petit test sur le code proposé et j'ai un sérieux doute sur son fonctionnement car l'instruction
r = Range("a9").End(xlDown).Row + 1 pointe vers la ligne 65537 se qui correspond à la dernière ligne d'une feuille ......pas possible de mettre des données.....
Merci de votre réponse.
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
3 avril 2008 à 16:15
3 avril 2008 à 16:15
Non le code ne fonctionne que si il n'y a pas de cellule vide à partir de la cellule A9.
C'est pourquoi dans la premiere UserForm il y a le détail en plus:
r = 9 et là normalement ça marche.
C'est pourquoi dans la premiere UserForm il y a le détail en plus:
r = 9 et là normalement ça marche.
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
3 avril 2008 à 16:20
3 avril 2008 à 16:20
Heu la discussion c'est mise en Problème résolu mais se n'est pas franchement le cas...
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
3 avril 2008 à 16:30
3 avril 2008 à 16:30
Bonjour,
Pas de probléme, j'ai téléchargé votre fichier, la réponse va suivre, un peu de patience.
Pas de probléme, j'ai téléchargé votre fichier, la réponse va suivre, un peu de patience.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
3 avril 2008 à 16:57
3 avril 2008 à 16:57
Bonjour,
Première question : d'ou vient cette ligne d'instruction r = Range("a9").End(xlDown).Row + 1?
Elle provoque une erreur .....
Première question : d'ou vient cette ligne d'instruction r = Range("a9").End(xlDown).Row + 1?
Elle provoque une erreur .....
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
3 avril 2008 à 17:20
3 avril 2008 à 17:20
Et bien je ne sais plus qui m'a donné cette astuce.
Comme je vien d'expliquer en effet elle peut provoquer une erreur si jamais il y a une cellule vide dans la colonne A à partir de la ligne 9. Donc dans la première Userform qui intervient si l'on clique sur minimum 2 checkbox, il n'y aura plus de pb.
Ca peut paraitre bete, mais je n'ai pas trouvé d'autre solution, et dans la logique d'utilisation du fichier l'utilisateur doit normalement cliqué plus de 2 checkbox (ce sont des phases obligatoires sur le chantier).
J'èspere avoir était suffisament clair et expressif.
Je vous remercie déja de prendre de votre temps pour répondre à mes problèmes.
Cordialement
Grobibi34
PS: je ne pourrais plus répondre jusqu'a demain matin, n'ésitez pas à accumuler les remarques auquels je tenterai d'y répondre demain matin
Comme je vien d'expliquer en effet elle peut provoquer une erreur si jamais il y a une cellule vide dans la colonne A à partir de la ligne 9. Donc dans la première Userform qui intervient si l'on clique sur minimum 2 checkbox, il n'y aura plus de pb.
Ca peut paraitre bete, mais je n'ai pas trouvé d'autre solution, et dans la logique d'utilisation du fichier l'utilisateur doit normalement cliqué plus de 2 checkbox (ce sont des phases obligatoires sur le chantier).
J'èspere avoir était suffisament clair et expressif.
Je vous remercie déja de prendre de votre temps pour répondre à mes problèmes.
Cordialement
Grobibi34
PS: je ne pourrais plus répondre jusqu'a demain matin, n'ésitez pas à accumuler les remarques auquels je tenterai d'y répondre demain matin
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
3 avril 2008 à 18:21
3 avril 2008 à 18:21
Bonsoir,
Ci-joint ma contribution https://www.cjoint.com/?edstYuWO6J
Est-ce que celà correspond à votre attente ?
Ci-joint ma contribution https://www.cjoint.com/?edstYuWO6J
Est-ce que celà correspond à votre attente ?
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
3 avril 2008 à 21:35
3 avril 2008 à 21:35
Bonjour,
Petit complément:
il serait bien de donner un titre à la colonne "A" de la "Feuil1" par exemple "Récapitulatif..." en "A8".
De cette maniére les enregistrements des diverses "CheckBox" et "TextBox" débuteront à la suite du titre grâce à l'instruction [r = Range("a65536").End(xlUp).Row + 1] contenue dans les divers codes.
Bonne journée
Petit complément:
il serait bien de donner un titre à la colonne "A" de la "Feuil1" par exemple "Récapitulatif..." en "A8".
De cette maniére les enregistrements des diverses "CheckBox" et "TextBox" débuteront à la suite du titre grâce à l'instruction [r = Range("a65536").End(xlUp).Row + 1] contenue dans les divers codes.
Bonne journée
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
4 avril 2008 à 09:21
4 avril 2008 à 09:21
Bon c'est exactement ce que je voulai.
Je ne sais pas comment vous remercier, vous m'avais bien dépanné sur ce coup là.
Ceci dis, je me permet d'abuser un peu... le nouveau code est excellent mais il génere plein de ligne vide en dessous ce qui me pose un problème si je veu imprimer mon document. Je pensai donc à selectionner toutes les lignes à partir de r jusqu'a 65537et faire supprimer, mais je ne vois pas le code pour pouvoir faire ça.
j'avai pensé à:
Rows("r:65536").Select
Selection.Delete Shift:=xlUp
Mais bien sur il y a là un problème de syntaxe avec le r (ma variable)
(je peu ouvrir un nouveau sujet si nécessair)
Cordialement,
Grobibi34
Je ne sais pas comment vous remercier, vous m'avais bien dépanné sur ce coup là.
Ceci dis, je me permet d'abuser un peu... le nouveau code est excellent mais il génere plein de ligne vide en dessous ce qui me pose un problème si je veu imprimer mon document. Je pensai donc à selectionner toutes les lignes à partir de r jusqu'a 65537et faire supprimer, mais je ne vois pas le code pour pouvoir faire ça.
j'avai pensé à:
Rows("r:65536").Select
Selection.Delete Shift:=xlUp
Mais bien sur il y a là un problème de syntaxe avec le r (ma variable)
(je peu ouvrir un nouveau sujet si nécessair)
Cordialement,
Grobibi34
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
4 avril 2008 à 11:50
4 avril 2008 à 11:50
Bonjour,
Il ne doit pas y avoir des lignes vide car la ligne d'instruction [r = Range("a65536").End(xlUp).Row + 1] ne fait que trouver la première cellule vide qui suit une pleine. J'ai contrôlé pour les "UserForm" Technicien et Sous-traitant c'est tout OK. Le probléme est alleur, je viens à l'instant de faire un essai d'impresseion et il me donne 37 pages à imprimé pour la feuille 1 qui est vide.
Je contrôle se qui se passe, la réponse va suivre.
Concernant :j'avais pensé à: Rows("r:65536").Select
La plage n'est pas correcte, plutôt ceci : Rows("9:65536").Select
Il ne doit pas y avoir des lignes vide car la ligne d'instruction [r = Range("a65536").End(xlUp).Row + 1] ne fait que trouver la première cellule vide qui suit une pleine. J'ai contrôlé pour les "UserForm" Technicien et Sous-traitant c'est tout OK. Le probléme est alleur, je viens à l'instant de faire un essai d'impresseion et il me donne 37 pages à imprimé pour la feuille 1 qui est vide.
Je contrôle se qui se passe, la réponse va suivre.
Concernant :j'avais pensé à: Rows("r:65536").Select
La plage n'est pas correcte, plutôt ceci : Rows("9:65536").Select
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
4 avril 2008 à 11:55
4 avril 2008 à 11:55
Oups dsl je n'avais pas vu que vous m'aviez répondu j'ai édité un nouveau sujet.
Je suis tout à fais d'accord pour dire que le problème ne vient pas des lignes que vous m'avez donné
J'essai se que vous m'avez dis.
Je suis tout à fais d'accord pour dire que le problème ne vient pas des lignes que vous m'avez donné
J'essai se que vous m'avez dis.
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
>
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
4 avril 2008 à 13:06
4 avril 2008 à 13:06
Bonjour,
Concernant l'impression, ce n'est pas les lignes vides qui génèrent les 37 pages d'impression.
Vous avez la ligne 5 qui comprend 256 colonnes (remplie avec "Janvier") donc si on compte environ 7 colonnes par page vous avez vos 37 pages d'impression. Vous pouvez le visualiser en faisant un apperçu avant impression .
Concernant l'impression, ce n'est pas les lignes vides qui génèrent les 37 pages d'impression.
Vous avez la ligne 5 qui comprend 256 colonnes (remplie avec "Janvier") donc si on compte environ 7 colonnes par page vous avez vos 37 pages d'impression. Vous pouvez le visualiser en faisant un apperçu avant impression .
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
4 avril 2008 à 12:05
4 avril 2008 à 12:05
heu oui mais si je met:
Rows("9:65536").Select
Toutes mes cellules se suppriment!
Rows("9:65536").Select
Toutes mes cellules se suppriment!
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
4 avril 2008 à 13:15
4 avril 2008 à 13:15
Bonjour,
Eh bien oui cela sélectionne les lignes de la 9ième à la dernière (65536) et avec "Delete" ou "Clear" toutes les cellules correspondantes à la sélection seront donc supprimées.
Précisez donc ce que vous voulez effacer ou supprimer !!!!
Eh bien oui cela sélectionne les lignes de la 9ième à la dernière (65536) et avec "Delete" ou "Clear" toutes les cellules correspondantes à la sélection seront donc supprimées.
Précisez donc ce que vous voulez effacer ou supprimer !!!!
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
4 avril 2008 à 13:23
4 avril 2008 à 13:23
Bonjour,
Avez-vous réalisé ma proposition du poste 14 ?
Merci de votre réponse.
Avez-vous réalisé ma proposition du poste 14 ?
Merci de votre réponse.
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
4 avril 2008 à 13:48
4 avril 2008 à 13:48
Je voudrais supprimer les lignes qui continuent de s'éditer sous mon tableau alors qu'il n'y a rien d'écris dessus.
Et donc sa me pose des problèmes pour l'impression vu qu'il veu imprimer des lignes vides...
Je n'ai pas encore pris le temps d'essayé je m'y met de suite.
Cordialement
Grobibi34
Et donc sa me pose des problèmes pour l'impression vu qu'il veu imprimer des lignes vides...
Je n'ai pas encore pris le temps d'essayé je m'y met de suite.
Cordialement
Grobibi34
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
4 avril 2008 à 13:55
4 avril 2008 à 13:55
Bonjour,
Pouvez-vous m'envoyer la partie qui génère les lignes vide........ !
Une ligne vide ne sera jamais prise en compte pour l'impression sauf si vous le voulez.
Avez-vous lu mon explication au poste 19
Concernant l'impression, ce n'est pas les lignes vides qui génèrent les 37 pages d'impression.
Vous avez la ligne 5 qui comprend 256 colonnes (remplie avec "Janvier") donc si on compte environ 7 colonnes par page vous avez vos 37 pages d'impression. Vous pouvez le visualiser en faisant un apperçu avant impression .
Pouvez-vous m'envoyer la partie qui génère les lignes vide........ !
Une ligne vide ne sera jamais prise en compte pour l'impression sauf si vous le voulez.
Avez-vous lu mon explication au poste 19
Concernant l'impression, ce n'est pas les lignes vides qui génèrent les 37 pages d'impression.
Vous avez la ligne 5 qui comprend 256 colonnes (remplie avec "Janvier") donc si on compte environ 7 colonnes par page vous avez vos 37 pages d'impression. Vous pouvez le visualiser en faisant un apperçu avant impression .
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
4 avril 2008 à 14:16
4 avril 2008 à 14:16
Excusez moi non je ne l'avai pas lu ok.
Je vien d'identifier la partie de mon code qui génére ces 200lignes de trop.
J'ai voulu griser les jours de week-end, j'ai donc écris ce code ci:
Range("C7:IV200").Select
ActiveWindow.SmallScroll Down:=-21
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=JOURSEM(C$8;2)>5"
Selection.FormatConditions(1).Interior.Pattern = xlGray16
Selection.HorizontalAlignment = xlCenter
C'est donc bien le IV200 qui créait problème.
Comment puis-je garder la meme formule mais en remplaçant le IV200 par un IV la cellule la plus bas dans mon tableau ?
Merci encore pour tout le temps que vous me consacrez afin de résoudre mes problèmes.
Cordialement,
Grobibi34
Je vien d'identifier la partie de mon code qui génére ces 200lignes de trop.
J'ai voulu griser les jours de week-end, j'ai donc écris ce code ci:
Range("C7:IV200").Select
ActiveWindow.SmallScroll Down:=-21
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=JOURSEM(C$8;2)>5"
Selection.FormatConditions(1).Interior.Pattern = xlGray16
Selection.HorizontalAlignment = xlCenter
C'est donc bien le IV200 qui créait problème.
Comment puis-je garder la meme formule mais en remplaçant le IV200 par un IV la cellule la plus bas dans mon tableau ?
Merci encore pour tout le temps que vous me consacrez afin de résoudre mes problèmes.
Cordialement,
Grobibi34
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
4 avril 2008 à 16:35
4 avril 2008 à 16:35
Bonjour,
Je vous propose se qui suit :
vous ajoutez l'instruction suivante juste avant votre (range("C7......))
la référence est la colonne "C" (elle a toujours une valeur pour chaque ligne concernée.....)
r = Range("C65536").End(xlUp).Row + 1
Votre ligne "Range("C7.....) qui suit, devient :
Range("C7:IV" & r).Select
Note: avez-vous mis le titre "Récapitulatif.." dans la feuil1 en cellule "A8" oui / non ?
Bonne fin de journée.
Je vous propose se qui suit :
vous ajoutez l'instruction suivante juste avant votre (range("C7......))
la référence est la colonne "C" (elle a toujours une valeur pour chaque ligne concernée.....)
r = Range("C65536").End(xlUp).Row + 1
Votre ligne "Range("C7.....) qui suit, devient :
Range("C7:IV" & r).Select
Note: avez-vous mis le titre "Récapitulatif.." dans la feuil1 en cellule "A8" oui / non ?
Bonne fin de journée.
3 avril 2008 à 09:15
(Je reste dans la colonne A)
Private Sub CommandButton2_Click()
Dim Ctrl As Control, r
r = Range("a9").End(xlDown).Row + 1
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "Textbox" Then
If Ctrl.Value <> "" Then
ActiveSheet.Cells(r, 1) = Ctrl.Value
r = r + 1
End If
End If
Next Ctrl
Set Ctrl = Nothing
End Sub
Mais il ne se passe rien....
Je seche un peu là