Si cellule contient bout de variable

Bonsoir à tous,

Je début VBA ce soir, j'essaie d'y voir clair et de faire quelque chose d'un minimum optimisé.

J'ai un tableur avec un agenda pas très optimisé.. J'aimerai fractionner les cellules qui contiennent les jours de la semaine.

Actuellement, j'ai fait ça :

If UCase(Cells(i, 1).Value) Like UCase("*lundi*") Or UCase(Cells(i, 1).Value) Like UCase("*mardi*") Or UCase(Cells(i, 1).Value) Like UCase("*mercredi*") Or UCase(Cells(i, 1).Value) Like UCase("*jeudi*") Or UCase(Cells(i, 1).Value) Like UCase("*vendredi*") Or UCase(Cells(i, 1).Value) Like UCase("*samedi*") Or UCase(Cells(i, 1).Value) Like UCase("*dimanche*") Then

Ca marche, mais ça prend beaucoup de place juste pour ce test que je vais devoir réaliser plusieurs fois !

Est ce qu'il serait possible de faire :

dim i, day as integer

day = "lundi mardi mercredi jeudi vendredi samedi dimanche"

for i = range("b999").end(xlup).row to 1 step -1

if Ucase(cells(i,1).value) like day then
(des erreurs de syntaxes sont présentes, mais vous voyez l'idée).

En gros, comparer la valeur de la cellule à un bout d'une variable. Si la cellule contient une chaine de caractère que la variable contient aussi ; alors ...

Merci des conseils !!

Salut EIMrTT,

Dis-toi dès à présent que VBA peut faire des miracles...
Mais, si tu commences VBA CE SOIR, il vaut mieux te plonger dans les cours élémentaires de ce site (ou d'autres) voire dans de bons bouquins : tu y gagneras un temps fou plutôt que poser des questions à chaque souci...

Je pratique VB (ou d'autres appellations) depuis '84 et... j'en apprends tous les jours!

Creuse d'abord les bases, expérimente les blocs logiques (IF...), les boucles (FOR...), les tableaux, etc... Essaie, fais des erreurs, ré-essaie... et ne fais pas comme cette andouille, qui, comme toi, "commençait" VBA, et râlait de ne pas avoir un code tout fait : tu serais perdant !

Patience, courage, détermination !


A+

Merci pour ton message encourageant :)

Et oui, je sens que des erreurs et des tests il va y en avoir un paquet, de la frustration tout autant mais derrière c'est un peu ça qu'on aime ;)

Je cherche surtout pas de code tout prêt, si c'est pas le mien ça ne me conviendra pas de toutes façons ^^ C'est justement mon 1er tableau crashtest, celui sur lequel je pars sur des idées et des tests en tout genre pour m'approprier les différentes fonctions sans que ce soit finalement fonctionnel.

Simplement, de quel côté chercher pour cette fonction, "chercher dans "un bout de la variable" " ?

J'ai tenté des trucs mais ça terminait sur une usine à gaz à la place de cette fonction.. Ca ne m'empêchera pas de fouiner dans les guides et les forum, juste gagner un peu de temps.

Bonne soirée à toi :)

Ne te méprends pas, on va t'aider mais, première chose...

Nous n'avons pas de boule de cristal, malheureusement...


A+

Merci :)

Voila le tableau en question

Désolé de ne pas l'avoir up avant, vu que j'ai vraiment pas envie qu'on me donne du tout cuit je tentais juste de faire comprendre la fonction précise qu'il me manquait ^^

A savoir :

En gros, une sorte de instr(), mais avec le texte recherché qui est lui-même contenu dans un bout de variable.

Bonjour,

Pourquoi balaies-tu B alors que ta cellule fusionnée démarre en A ?

pourquoi une sorte de Instr() alors que c'est ce qu'il te faut ?
Découpe ta chaine avec Split(ta_chaine, " ") et regarde si l'élément 0 est dans jour.

Autre possibilité apparemment : si cellule fusionnée et non vide alors tu as une date
eric

Le problème, dans chaque cas proposé ici, est le prisme de chacun à travers lequel on comprend ce qu'on peut...
En gros, tu veux UnMerge les lignes-dates et effacer les lignes vides ou celles de RDV sauf si Annulé...

Pense pas que ça va t'aider dans un cadre de gestion d'agenda...
Un double-clic sur la feuille démarre la macro..

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Cancel = True
For x = Range("B" & Rows.Count).End(xlUp).Row To 1 Step -1
    'fractionner toutes les cellules, mettre la date en colonne 2
    If Range("A" & x & ":B" & x).MergeCells = True Then _
        Range("A" & x & ":B" & x).MergeCells = False: _
        Cells(x, 2) = Cells(x, 1): _
        Cells(x, 1) = ""
    ' Suppressions des cellules vides, ou qui contiennent des informations inutiles
    If Range("B" & x).Value = "" Or _
        (Range("B" & x).Font.Color = RGB(0, 0, 0) And InStr(Cells(x, 2), "annulé") = 0) Then _
            Rows(x).Delete shift:=xlUp
Next
'
End Sub
7eimrtt.zip (308.83 Ko)


A+

Rechercher des sujets similaires à "contient bout variable"