DvDthèque - Déplacement de cellules [Excel-VBA]
Dernière réponse : dans Programmation
Bonjour.
Je m'excuse dors et déjà car c'est la première fois que je viens sur le forum et je ne me repère pas encore trop bien, veuillez m'excusez si le topic ne se situe pas au bon endroit.
**J'ai un petit souci, j'ai en projet de réaliser un classeur Excel contenant la liste des films de ma dvdthèque.
Contenant:
Le classeur est divisé en 27 feuilles.
1 feuille par lettre pour un rangement de chaque film par ordre alphabétique afin que ce soit clair lors d'une recherche.
1 feuille pour les nombres.
1 feuille pour faire mes traitements: Insertion de film et recherche de film.
Chaque feuille de rangement en contient qu'une seule colonne remplie contenant le nom du film. Il n'y a pas de titre de colonne, le premier film correspond donc à la première cellule (A1) de la page et le second à la seconde cellule (A2).
-------------------------------------------------------------
Spécifications:
Dans la feuille de traitement que j'ai appelé "Traitement" je désire donc incorporer deux macro.
-1 macro de recherche de nom de film avec un champ texte "Txt_ recherche" contenant le nom du film à chercher ainsi qu'un bouton "btn_recherche".
Le résultat affichera la réponse oui/non dans une cellule de la feuille "Traitement" si le film existe ou pas.
-1 macro d'insertion de film avec un champ texte "txt_inserer" contenant le nom du film à incorporer ainsi qu'un bouton "btn_inserer".
Le nom du nouveau film se rangera automatiquement dans la feuille correspondante à sa première lettre (pour que le fichier soit bien rangé comme dis précédemment) Et je souhaiterai aussi que la feuille se trie alphabétiquement.
-------------------------------------------------------------
Problème N°1:
Comment arriver à déplacer le nom contenu dans "txt_inserer" dans la bonne feuille et faire un tri alphabétique de toute la feuille par la suite ?.
Si je suis un raisonnement logique il faudrait prendre la première lettre du nom du film comme caractère d'opération, le comparer au nom des feuilles et dés que la correspondance est exacte, insérer le nom à la fin de la feuille.
Pour faire simple et vu qu'un trie alphabétique se fera par la suite, je pensai stocké le nom à la cellule n° 65000 et faire le tri sur toute la colonne par la suite.
Je pensai utilisé la fonction "sort" mais c'est la premiere fois et j'aurai aimé de l'aide savoir si cela allai faire ce que je souhaite ou bien si il y a mieux.
-------------------------------------------------------------
En vous remerciant à l'avance.
CortX
Je m'excuse dors et déjà car c'est la première fois que je viens sur le forum et je ne me repère pas encore trop bien, veuillez m'excusez si le topic ne se situe pas au bon endroit.
**J'ai un petit souci, j'ai en projet de réaliser un classeur Excel contenant la liste des films de ma dvdthèque.
Contenant:
Le classeur est divisé en 27 feuilles.
1 feuille par lettre pour un rangement de chaque film par ordre alphabétique afin que ce soit clair lors d'une recherche.
1 feuille pour les nombres.
1 feuille pour faire mes traitements: Insertion de film et recherche de film.
Chaque feuille de rangement en contient qu'une seule colonne remplie contenant le nom du film. Il n'y a pas de titre de colonne, le premier film correspond donc à la première cellule (A1) de la page et le second à la seconde cellule (A2).
-------------------------------------------------------------
Spécifications:
Dans la feuille de traitement que j'ai appelé "Traitement" je désire donc incorporer deux macro.
-1 macro de recherche de nom de film avec un champ texte "Txt_ recherche" contenant le nom du film à chercher ainsi qu'un bouton "btn_recherche".
Le résultat affichera la réponse oui/non dans une cellule de la feuille "Traitement" si le film existe ou pas.
-1 macro d'insertion de film avec un champ texte "txt_inserer" contenant le nom du film à incorporer ainsi qu'un bouton "btn_inserer".
Le nom du nouveau film se rangera automatiquement dans la feuille correspondante à sa première lettre (pour que le fichier soit bien rangé comme dis précédemment) Et je souhaiterai aussi que la feuille se trie alphabétiquement.
-------------------------------------------------------------
Problème N°1:
Comment arriver à déplacer le nom contenu dans "txt_inserer" dans la bonne feuille et faire un tri alphabétique de toute la feuille par la suite ?.
Si je suis un raisonnement logique il faudrait prendre la première lettre du nom du film comme caractère d'opération, le comparer au nom des feuilles et dés que la correspondance est exacte, insérer le nom à la fin de la feuille.
Pour faire simple et vu qu'un trie alphabétique se fera par la suite, je pensai stocké le nom à la cellule n° 65000 et faire le tri sur toute la colonne par la suite.
Je pensai utilisé la fonction "sort" mais c'est la premiere fois et j'aurai aimé de l'aide savoir si cela allai faire ce que je souhaite ou bien si il y a mieux.
-------------------------------------------------------------
En vous remerciant à l'avance.
CortX
Autres pages sur : dvdtheque deplacement cellules excel vba
Lassé par la pub ? Créez un compte
Le meilleur moyen pour faire une macro adhoc sous Excel, c'est d'enregistrer dans une macro des actions toutes simples (écrire dans une cellule, trier une colonne), puis d'ouvrir l'éditeur VBA et de tenter de comprendre ce qui à été enregistrer. A partir de là, se prendre la tête avec la macro, l'aide en ligne et PPC.
Exemple : Comment arriver à déplacer le nom contenu dans "txt_inserer" dans la bonne feuille et faire un tri alphabétique de toute la feuille par la suite.
Actions simples :
- Choisir une feuille
- Ecrire quelque chose dans cette feuille
- Trier la feuille
En suivant le baratin précédent, on obtient :
Pour trier
En lisant l'aide en ligne sur Sheets on peut apprendre queTip: Appelle ta première feuille A, le seconde B, la dernière 0-9, pour le reste
En relisant l'aide de chaque élément pour écrire dans une cellule, je simplifie le tout :
De même pour le tri :
Maintenant la UserForm. Le texte de la TextBox est nom_de_la_textbox.Text. Le reste est facile :
Tu as posté dans la bonne cat.
Ton problème n°1 devrait être règlé.
J'espère que ta prochaine question portera sur un bon de code maintenant que tu sais comment en produire simplement.
Un conseil : Utilise MsgBox pour afficher les messages. C'est plus sympa qu'un texte dans une cellule.
Exemple, dans ta recherche, affiche "Film non trouvé" dans une boîte de message si les film n'est pas là,
sinon, ouvre la bonne feuille et sélectionne la bonne ligne.
Exemple : Comment arriver à déplacer le nom contenu dans "txt_inserer" dans la bonne feuille et faire un tri alphabétique de toute la feuille par la suite.
Actions simples :
- Choisir une feuille
- Ecrire quelque chose dans cette feuille
- Trier la feuille
En suivant le baratin précédent, on obtient :
pour choisir une feuille.
Sheets("Feuil1").Select
Et voilà comment écrire dans une cellule.
Range("A42").Select
ActiveCell.FormulaR1C1 = "blablabla"
Pour trier
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
En lisant l'aide en ligne sur Sheets on peut apprendre que
Citation :
Pour renvoyer un seul objet [..] Worksheet, utilisez Sheets(index), où index est le numéro d'index ou le nom de la feuille.En relisant l'aide de chaque élément pour écrire dans une cellule, je simplifie le tout :
Range("A42").Formula = "blablabla"
De même pour le tri :
Selection.Sort Key1:=Range("A1")
Maintenant la UserForm. Le texte de la TextBox est nom_de_la_textbox.Text. Le reste est facile :
Private Sub CommandButton1_Click()
Dim X as String
If TextBox1.Text = "" Then
' On sort parce que le nom du film n'est pas renseigné.
' Mettre ici un bip, un message d'erreur ou autre
Exit Sub
End If
' Prendre la première lettre à gauche
' et la mettre en majuscule. Mettre un Trim éventuellement
X = UCase(Left(TextBox1.Text, 1))
' Si la feuille des A s'appelle A c'est facile,
' sinon si c'est plus compliqué, utiliser des If ou des Case
If X >= "A" And X <= "Z" Then Sheets(X).Select else Sheets("0-9").Select
Range("A65536").Formula = TextBox1.Text
Selection.Sort Key1:=Range("A1")
End Sub
Tu as posté dans la bonne cat.
Ton problème n°1 devrait être règlé.
J'espère que ta prochaine question portera sur un bon de code maintenant que tu sais comment en produire simplement.
Un conseil : Utilise MsgBox pour afficher les messages. C'est plus sympa qu'un texte dans une cellule.
Exemple, dans ta recherche, affiche "Film non trouvé" dans une boîte de message si les film n'est pas là,
sinon, ouvre la bonne feuille et sélectionne la bonne ligne.
Oula, ca c'est du dépannage.
Merci infiniement.
Tu va peut etre pouvoir me dépanner j'ai un second probleme.
Problème N°2:
Sur ma feuille j'ai voullu faire du desing un peu mieux que de la gestion de cellule. J'ai donc utilisé des zone de texte pour mes champs à remplir.
Seulement voici le probleme.
Durant la macro il n'est pas possible (je n'ai pas reussi) de selectionner le contenu de la zone de texte, il selectionne la zone de texte entiere.
Et donc le copier coller déplace la zone et texte et son contenu plutot que le texte tout seul.
Dans le code que tu m'a donné:
pour choisir une feuille.
Range("A42").Select
Ici tu selectionne la Cellule A-42.
Seulement c'est pas une cellule qui doit etre selectionné mais plutot le contenu de la zone de texte.
J'ai donc essayé de dire à excel via les propriété des zone de texte de "boite a outil de controle" d'associer la cellule a la case comme il est possible de le faire pour les zone de liste de "formulaire" mais je n'y suis pas arrivé.
Merci infiniement.
Tu va peut etre pouvoir me dépanner j'ai un second probleme.
Problème N°2:
Sur ma feuille j'ai voullu faire du desing un peu mieux que de la gestion de cellule. J'ai donc utilisé des zone de texte pour mes champs à remplir.
Seulement voici le probleme.
Durant la macro il n'est pas possible (je n'ai pas reussi) de selectionner le contenu de la zone de texte, il selectionne la zone de texte entiere.
Et donc le copier coller déplace la zone et texte et son contenu plutot que le texte tout seul.
Dans le code que tu m'a donné:
Citation :
pour choisir une feuille.
Range("A42").Select
Ici tu selectionne la Cellule A-42.
Seulement c'est pas une cellule qui doit etre selectionné mais plutot le contenu de la zone de texte.
J'ai donc essayé de dire à excel via les propriété des zone de texte de "boite a outil de controle" d'associer la cellule a la case comme il est possible de le faire pour les zone de liste de "formulaire" mais je n'y suis pas arrivé.
( Ah la la. Du design dans Excel ! Exceml est un tableur, pour faire des calculs, pas une base de données. Ce que tu cherches à faire, c'est pile poil dans le registre de Access. Mais peut-être n'as tu pas Access - bonne raison, ou simplement pas envie de le faire avec Access - très mauvaise excuse )
Je me répète :C'est à toi de jouer maintenant. Quel code obtiens-tu lors de l'enregistrement d'une macro, lorsque tu sélectionnes du texte dans ta zone de texte ?
Je me répète :
Citation :
Le meilleur moyen pour faire une macro adhoc sous Excel, c'est d'enregistrer dans une macro des actions toutes simples
/!\ Le contenu du message est faux cf posts suivants /!\
Je vais étudier cela, c'ets peut etre pas si bete, je n'y avais aps pensé.
ActiveSheet.Shapes("TextBox1").Select
Selection.Verb Verb:=xlPrimary
Range("F14").Select
ActiveSheet.Paste
Alors en fait la solution, se trouve dans le fait de faire:
Lors de la creation de la macra, nosu somme en mode edition docn; il suffit de faire un clic droit sur al zone de texte > Objet de zone de texte > Edition
A ce moment la, avec un ctrl+A il est possible de selectionné tout le texte et de faire un copier coller.
Alors que sans etre dans cette "edition un peu spéciale", le curseur de la souris reste normal et ne passe pas en mode sélection donc impossibilité de séléctionner le texte alors que là oui.
Je vais essayé de finir sous excel maintenant que cette action marche comme je le souhaitai.
Et j'enchainerai par le meme sous Access en demandant des cours à mes profs pour qu'il m'explique un peu mieux comment le logiciel fonctionne.
N'ayant pas la feuille original sous la main je suis sur une feuille classique je réedit mon message dans quelque instant avec les bon noms de zone de texte.
/!\ Le contenu du message est faux cf posts suivants /!\
Citation :
Heu si j'ai acces, mais je n'ai fait qu'une initiation en cours.Je vais étudier cela, c'ets peut etre pas si bete, je n'y avais aps pensé.
Citation :
ActiveSheet.Shapes("TextBox1").Select
Selection.Verb Verb:=xlPrimary
Range("F14").Select
ActiveSheet.Paste
Alors en fait la solution, se trouve dans le fait de faire:
Lors de la creation de la macra, nosu somme en mode edition docn; il suffit de faire un clic droit sur al zone de texte > Objet de zone de texte > Edition
A ce moment la, avec un ctrl+A il est possible de selectionné tout le texte et de faire un copier coller.
Alors que sans etre dans cette "edition un peu spéciale", le curseur de la souris reste normal et ne passe pas en mode sélection donc impossibilité de séléctionner le texte alors que là oui.
Je vais essayé de finir sous excel maintenant que cette action marche comme je le souhaitai.
Et j'enchainerai par le meme sous Access en demandant des cours à mes profs pour qu'il m'explique un peu mieux comment le logiciel fonctionne.
N'ayant pas la feuille original sous la main je suis sur une feuille classique je réedit mon message dans quelque instant avec les bon noms de zone de texte.
/!\ Le contenu du message est faux cf posts suivants /!\
zeb: Quel code obtiens-tu lors de l'enregistrement d'une macro, lorsque tu sélectionnes du texte dans ta zone de texte ?
Rep: Je n'obtient pas de code car on en peut pas faire cette manip (on peut la selectionné a la souris mais ce n'est pas comptabilisé comme du code) ou bien je m'y prend comme un manchot.
Dommage que l'on ne puisse pas rayer d'un gros trait rouge le post précédent mais je me suis completemetn trompé.
J'avais gardé en mémoire un ancien c/c ce qui m'a trompé.
J'ai rééssayé la technique et elle ne marche plus.
J'ai donc cherché autre chose.
Dans les propriété de la zone de textz (Clic droit > propriétés > une ligne s'appele "linked Cell"
J'ai donc essayé en mettant la cellule "A1" et effectivement il me la lie.
Ce qui me permet donc de faire un selection d'un texte contenu dans une cellule plutot que dans une zone de texte.
J'ai pris un chemin détourné il est vrai qui réduit la difficulté mais je n'ai pas trouvé de moyen, contrairement a ce que j'ai dis au post précédent de faire une copie d'un texte contenu dans une "zone de texte".
J'ai donc un code on en peut plus simple:
Rep: Je n'obtient pas de code car on en peut pas faire cette manip (on peut la selectionné a la souris mais ce n'est pas comptabilisé comme du code) ou bien je m'y prend comme un manchot.
Dommage que l'on ne puisse pas rayer d'un gros trait rouge le post précédent mais je me suis completemetn trompé.
J'avais gardé en mémoire un ancien c/c ce qui m'a trompé.
J'ai rééssayé la technique et elle ne marche plus.
J'ai donc cherché autre chose.
Dans les propriété de la zone de textz (Clic droit > propriétés > une ligne s'appele "linked Cell"
J'ai donc essayé en mettant la cellule "A1" et effectivement il me la lie.
Ce qui me permet donc de faire un selection d'un texte contenu dans une cellule plutot que dans une zone de texte.
J'ai pris un chemin détourné il est vrai qui réduit la difficulté mais je n'ai pas trouvé de moyen, contrairement a ce que j'ai dis au post précédent de faire une copie d'un texte contenu dans une "zone de texte".
J'ai donc un code on en peut plus simple:
Range("A1").Select
Selection.Copy
Range("G3").Select
ActiveSheet.Paste
( Pour supprimer ton post, va dans "Editer ce message", puis coche "Effacer ce message" et clique sur valider.... et hop plus de message indésirable ).
Je te posais la question pour plusieurs bonnes raisons.
1°) si tu apprends à le faire par toi-même tu auras gagné plus qu'en récupérant un truc tout fait.
2°) Je n'avais pas Excel à dispo pour te donner la soluce de mémoire
.
Mais c'est tant mieux, tu as trouvé toute seule.
Je te posais la question pour plusieurs bonnes raisons.
1°) si tu apprends à le faire par toi-même tu auras gagné plus qu'en récupérant un truc tout fait.
2°) Je n'avais pas Excel à dispo pour te donner la soluce de mémoire
.Mais c'est tant mieux, tu as trouvé toute seule.
Je viens de passer 3 heures avec un ami et ca ne marche toujours pas.
Apparement il y a un probleme pour le range.
http://www.savefile.com/files/3788606
J'ai mis ta syntaxe et une autre un peu modifié avec les commentaire de ce qui ne va pas, si tu peux jeté un oeil et me dire ce qu'il en es car la je seche completement.
merci
Apparement il y a un probleme pour le range.
http://www.savefile.com/files/3788606
J'ai mis ta syntaxe et une autre un peu modifié avec les commentaire de ce qui ne va pas, si tu peux jeté un oeil et me dire ce qu'il en es car la je seche completement.
merci
Si ça s'affiche !! Mais sur la feuille Traitement. D'où la petite modif suivante
Une fois la solution sous les yeux, ça paraît simple
' AVANT
If X >= "A" And X <= "Z" Then Sheets(X).Select Else Sheets("0-9").Select
Range("A5").Formula = TextBox1.Text
'APRES
If X >= "A" And X <= "Z" Then Sheets(X).Select Else Sheets("0-9").Select
ActiveSheet.Range("A5").Formula = TextBox1.Text
Nouveau probleme:
Je cherche à réaliser un bouton qui me permettra de trier toutes mes pages d'un seul coup.
J'avais donc l'intention d'utilisé une structure en "for ... next" mais mon problème est le suivant.
Mes nom de pages sont des lettres et je ne sais pas comment faire pour attribuer une valeur à la variable ainsi que d'incrémenter mon pas de changement.
Mon problème se situe à la ligne 5 du code: "For nompage = A To Z Step 1"
.
"Erreur de compilation.
Incompatibilité de type"
Mon step me semble bizarre aussi étant donnée que la variable est un charactère.
Je n'ai pas réussi à trouvé de site expliquant le fonctionnement d'une telle structure de la variable.
En vous remerciant à l'avance.
CortX
Je cherche à réaliser un bouton qui me permettra de trier toutes mes pages d'un seul coup.
J'avais donc l'intention d'utilisé une structure en "for ... next" mais mon problème est le suivant.
Mes nom de pages sont des lettres et je ne sais pas comment faire pour attribuer une valeur à la variable ainsi que d'incrémenter mon pas de changement.
Sub Triagetot()
Dim nompage As Characters
For nompage = A To Z Step 1
Sheets(nompage).Select
' ActiveSheet.Columns("A").Select
' Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
' OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
' DataOption1:=xlSortNormal
Next nompage
End Sub
Mon problème se situe à la ligne 5 du code: "For nompage = A To Z Step 1"
.
"Erreur de compilation.
Incompatibilité de type"
Mon step me semble bizarre aussi étant donnée que la variable est un charactère.
Je n'ai pas réussi à trouvé de site expliquant le fonctionnement d'une telle structure de la variable.
En vous remerciant à l'avance.
CortX
J'ai renomé le nom interne des feuille en leur lettre d'identification, pour etre sur de ne aps avoir de probleme lors des syntaxe vb, ne sacchant pas qu'elle nom il prendrai, 'jai mis les deux meme (identification et nom).
J'ai 2 heure devant moi, je vais finir normalement mon projet, il ne me reste que la focntion de recherche à faire.
1\ Récupérer le nom du film dans une textbox (ca maintenant c'est bon).
2\ Utilisé ce nom pour faire une recherche sur toute les feuilles. (ca reste à faire)
Je vais surement utilisé le systeme de la premiere lettre pour me mettre sur al bonne page, et ainsi effectué la recherche via une macro.Et afficher le résultat sous forme de msgbox.
Allez je me met au travail.
Bonne fin de journée je vous tinedri au courant des résultats.
J'ai 2 heure devant moi, je vais finir normalement mon projet, il ne me reste que la focntion de recherche à faire.
1\ Récupérer le nom du film dans une textbox (ca maintenant c'est bon).
2\ Utilisé ce nom pour faire une recherche sur toute les feuilles. (ca reste à faire)
Je vais surement utilisé le systeme de la premiere lettre pour me mettre sur al bonne page, et ainsi effectué la recherche via une macro.Et afficher le résultat sous forme de msgbox.
Allez je me met au travail.
Bonne fin de journée je vous tinedri au courant des résultats.
Bah justetement, me revoila, je bloque sur quelque chose et en plus je crois meme savoir d'ou est ce que cela vient.
Voila, lors de ma recherche, je lui demande d'analyser les cellules et si le mot est trouvé dans la cellule active, il me renvoie une réponse sinon il ne me renvoie rien.
Le probleme c'ets que si le film n'éxiste pas, la cellule ne peut pas etre activé (logique) et donc j'ai le débeugeur qui se met en place.
Code VBA
Code Macro
Le problème se situe à la ligne 6 du second code (code Macro).
Si je comprend bien le probleme, cela vient du ".Activate" qui signifie "la cellule acitvé"
Le problème étant que si le mot n'es pas trouvé, aucune cellule n'est activé et donc il bloque.
Ce qu'il faudrai c'est trouvé une autre syntaxe pour qu'il fasse autre chose que activate, j'ai essayé avec un ".copy" pensant qu'il ne ferai rien mais non.
Le message d'erreur est:
"Variable d'objet ou de bloc With non définie"
J'ai pensé à faire une recherche négative, plutot que de commencé par la possibilité que le mot existe, commencé par la possibilité que le mot n'éxiste pas.
Est ce que cela serait possible, je n'ai pas trouvé de syntaxe "If not".
CortX
edit 15h23; je dois alelr en cours, je reprend le problème lorsque je seria chez moi ce soir, au environ de 19h-19h30
Voila, lors de ma recherche, je lui demande d'analyser les cellules et si le mot est trouvé dans la cellule active, il me renvoie une réponse sinon il ne me renvoie rien.
Le probleme c'ets que si le film n'éxiste pas, la cellule ne peut pas etre activé (logique) et donc j'ai le débeugeur qui se met en place.
Code VBA
Private Sub cmd_Recherche_Click()
Dim lettre As String
Dim mot As String
'If TextBox2.Text = "" Then
' Exit Sub
'End If
mot = TextBox2.Text
lettre = UCase(Left(TextBox2.Text, 1))
If lettre >= "A" And lettre <= "Z" Then Sheets(lettre).Select Else Sheets("0-9").Select
'Appel Macro
ActiveSheet.Select
Recherche
Code Macro
Sub Recherche()
Dim mot As String
mot = Sheets("Traitement").TextBox2.Text
If Cells.Find(What:=mot).Activate Then
MsgBox ("Le film est présent")
Else: MsgBox ("Le film n'existe pas")
End If
End Sub
Le problème se situe à la ligne 6 du second code (code Macro).
Si je comprend bien le probleme, cela vient du ".Activate" qui signifie "la cellule acitvé"
Le problème étant que si le mot n'es pas trouvé, aucune cellule n'est activé et donc il bloque.
Ce qu'il faudrai c'est trouvé une autre syntaxe pour qu'il fasse autre chose que activate, j'ai essayé avec un ".copy" pensant qu'il ne ferai rien mais non.
Le message d'erreur est:
"Variable d'objet ou de bloc With non définie"
J'ai pensé à faire une recherche négative, plutot que de commencé par la possibilité que le mot existe, commencé par la possibilité que le mot n'éxiste pas.
Est ce que cela serait possible, je n'ai pas trouvé de syntaxe "If not".
CortX
edit 15h23; je dois alelr en cours, je reprend le problème lorsque je seria chez moi ce soir, au environ de 19h-19h30
Voilà un soucis de programmation Objet. Vérifier que l'objet retourné n'est pas nul.
RTFM : Cells.Find renvoie un Range, ou Nothing.
Alors écrivons
Enjoy!
RTFM : Cells.Find renvoie un Range, ou Nothing.
Alors écrivons
Dim r as Range
Set r = Cells.Find(What:=mot)
If r is Nothing Then
MsgBox "Le film n'existe pas"
Else
r.Activate
MsgBox ("Le film est présent")
End If
Enjoy!
Rebonsoir,
Je viens de tester ce que tu m'a mis, tout simplement parfait.
Tu peux m'expliquer ce que c'est qu'un range, au début je croyai que c'était le mot pour cellules mais en fait je m'apercois que non, et je n'arrive pas à identifier précisement de quoi il s'agit.
Ci joint une copie du fichier final.
J'ai retirer mes données mais j'ai laissé la pages "SAV" au cas ou si une personne viendrait à l'utiliser, posséderait déja une liste de feuille sous Excel, il lui suffirai de copier sa liste dans la colonne "A" de la feuille "SAV" et d'executer les 3 bouttons à droite de "Traitement".
Je viens de tester ce que tu m'a mis, tout simplement parfait.
Tu peux m'expliquer ce que c'est qu'un range, au début je croyai que c'était le mot pour cellules mais en fait je m'apercois que non, et je n'arrive pas à identifier précisement de quoi il s'agit.
Ci joint une copie du fichier final.
J'ai retirer mes données mais j'ai laissé la pages "SAV" au cas ou si une personne viendrait à l'utiliser, posséderait déja une liste de feuille sous Excel, il lui suffirai de copier sa liste dans la colonne "A" de la feuille "SAV" et d'executer les 3 bouttons à droite de "Traitement".
oops encore une...
Désolé je suis un newbie...
En VB il exsite aussi:
Donc pour trouver les feuilles, on aurait pu avoir:
=> toutes les pages y passent.
Les pages "annexes" vont être triées.
Si cela est génant il faudra ajouter des tests:
Attention aux tests avec "AND" ou "OR" qui amménent vite de la confusion
Ce qui a déjà était donné est très bien.
Peut-être plus interressant car fait travailler sur les conversions de types (chaine <-> nombre).
Bon courage
Tchuss
Désolé je suis un newbie...
En VB il exsite aussi:
'for each xxxx in yyy
'next xxxx
Donc pour trouver les feuilles, on aurait pu avoir:
Sub Triagetot()
Dim Page As worksheet
For each Page in worksheets
Page.Select
' ActiveSheet.Columns("A").Select
' Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
' OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
' DataOption1:=xlSortNormal
Next Page
End Sub
=> toutes les pages y passent.
Les pages "annexes" vont être triées.
Si cela est génant il faudra ajouter des tests:
if ((Page.name <> "SAV") AND (Page.name <> "traitement")...) then
endif
Attention aux tests avec "AND" ou "OR" qui amménent vite de la confusion
Ce qui a déjà était donné est très bien.
Peut-être plus interressant car fait travailler sur les conversions de types (chaine <-> nombre).
Bon courage
Tchuss
azertysim> Il n'a y pas à mon sens de solutions + ou - intéressantes. Par contre, il y a des solutions + ou - élégantes. Tu as bien fait, cette solution n'en manque pas
.
En dehors de toutes considérations sur le VBA, permets-moi une petite remarque sur les AND et les OR. Les conditions des tests peuvent être très alambiqués. Retenir alors la solution la plus élégante (il insiste le bougre). Par exemple dans ce cas, il peut être plus malin de dire : Prendre les pages dont le nom est une lettre ou le mot 0-9. Imagine que cortx décide d'ajouter une page de commentaires, d'aide, de copyright/copyleft, etc. Ah ben sinon faut recoder la macro ! Pas glop.
.En dehors de toutes considérations sur le VBA, permets-moi une petite remarque sur les AND et les OR. Les conditions des tests peuvent être très alambiqués. Retenir alors la solution la plus élégante (il insiste le bougre). Par exemple dans ce cas, il peut être plus malin de dire : Prendre les pages dont le nom est une lettre ou le mot 0-9. Imagine que cortx décide d'ajouter une page de commentaires, d'aide, de copyright/copyleft, etc. Ah ben sinon faut recoder la macro ! Pas glop.
Bonjour zeb,
Tout à fait d'accord sur l'élégance.
D'ailleurs ca fait bientot 24h que je suis sur le sujet, sans aboutir élégament...
Bien que relativement élégante "ma" solution, n'est pas pratique pour ce cas, où les feuilles "utiles" sont fixes/déterminées.
C pourquoi j'avais ajouté la remarque sur les tests.
Dans un autre cas où les feuilles utiles sont "variables", cette solution peut devenir interressante.
Je le signale plus précisément maintenant et peut-être cela pourra-t-il servir à d'autres.
Bon courage à tous les "codeux".
A+
Tout à fait d'accord sur l'élégance.
D'ailleurs ca fait bientot 24h que je suis sur le sujet, sans aboutir élégament...
Bien que relativement élégante "ma" solution, n'est pas pratique pour ce cas, où les feuilles "utiles" sont fixes/déterminées.
C pourquoi j'avais ajouté la remarque sur les tests.
Dans un autre cas où les feuilles utiles sont "variables", cette solution peut devenir interressante.
Je le signale plus précisément maintenant et peut-être cela pourra-t-il servir à d'autres.
Bon courage à tous les "codeux".
A+
bonjour,
par expérience, Excel n'est pas le meilleur outil pour ce genre de gestion.
Il est préférable d'utiliser Access.
Ce qui permet de gérer des tables et de faire toutes sortes de requêtes SQL
En outre comme ils se programment tout les 2 en VBA, çà donne accès à l'ASP et à la programmation Web
J'ai commencé il y a de cela quelques mois à apprendre l'Html, ASP, PHP, CSS, javascript, XML, ....
et çà ouvre énormément de perspectives
Le grand avantage de la programmation Web est qu'il suffit d'un browser pour visualiser vos DVDs
Alors qu'une base Excel ou Access vous oblige à l'utilisation d'une clé USB avec l'appli dessus
ET surtout de partager sa passion avec d'autres internautes ( Web = réseau, partage )
Grace à des fonctions style "noter un DVD" => Liste des meilleurs DVDs
Cordialement
Christian
PS. Voilà où j'en suis sur la programmation de ma DVDthèque... çà progresse doucement
http://www.dvdlib.be/dvdpreview/dvdnew6.asp
C'est parti d'une base Access que j'utilise toujours d'ailleur pour encoder les Fiches cinéma et transfert des fiches sur le Web via le protocole SOAP
par expérience, Excel n'est pas le meilleur outil pour ce genre de gestion.
Il est préférable d'utiliser Access.
Ce qui permet de gérer des tables et de faire toutes sortes de requêtes SQL
En outre comme ils se programment tout les 2 en VBA, çà donne accès à l'ASP et à la programmation Web
J'ai commencé il y a de cela quelques mois à apprendre l'Html, ASP, PHP, CSS, javascript, XML, ....
et çà ouvre énormément de perspectives
Le grand avantage de la programmation Web est qu'il suffit d'un browser pour visualiser vos DVDs
Alors qu'une base Excel ou Access vous oblige à l'utilisation d'une clé USB avec l'appli dessus
ET surtout de partager sa passion avec d'autres internautes ( Web = réseau, partage )
Grace à des fonctions style "noter un DVD" => Liste des meilleurs DVDs
Cordialement
Christian
PS. Voilà où j'en suis sur la programmation de ma DVDthèque... çà progresse doucement
http://www.dvdlib.be/dvdpreview/dvdnew6.asp
C'est parti d'une base Access que j'utilise toujours d'ailleur pour encoder les Fiches cinéma et transfert des fiches sur le Web via le protocole SOAP
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumExcel vba conditions plusieurs cellules vides
- ForumExcel vba copier cellules vers autre classeur
- ForumExcel vba copier plage cellules
- ForumExcel vba appliquer formule plusieurs cellules
- ForumVba excel cellules
- ForumExcel importation de cellules en vba
- ForumPlage de cellules vba excel
- ForumVba excel parcours des cellules
- ForumVba excel somme de cellules
- articlesFusionner des cellules vba excel
- Voir plus