> Tous les forums > Forum Bureautique
 Fonction If then else
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
matbarns
  Posté le 21/12/2015 @ 16:05 
Aller en bas de la page 
Petit astucien

Bonjour,

j'ai un souci avec ma macro et je ne comprends pas lequel... en page 1, j'ai une liste de prénom:

1 2 3 4 5

tata

tutu

toto

titi

Je voudrais faire une recherche sur l'un des prénoms (par exemple toto) et vérifier si dans la colonne "1" (même ligne que toto) la cellule est vide. Si elle est vide, la macro ecrit le mot "bingo". Si elle est non-vide, je voudrais qu'elle passe à la colonne 2 et refasse la vérif etc... Mon problème est sur la fonction IF, qd je lance ma macro, il me dit "Else sans IF" et là je ne comprends pas puisque j'en ai mis un !!!!

Help !!!!!!!

J'ai écrit ceci:

Sub Recherche_mot()
Dim ligne_numero1, ligne_numero2, c, i
With Worksheets(1).Range("A1:F5000")
Set c = .Find(What:="toto", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True, SearchFormat:=False)
If Not c Is Nothing Then
ligne_numero1 = c.Row
'ici la boucle pour trouver la dernière occurence
Do
ligne_numero2 = c.Row
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Row <> ligne_numero1
Else
MsgBox "Désolé..... pas trouvé cette occurence": Exit Sub
End If
End With
Cells(ligne_numero1, 2).Select
For i = 1 To 5
If Cells(ligne_numero1, 1+i).Value = "" Then Cells(ligne_numero1, 1+i).Value = "bingo"
Else
Cells(ligne_numero1, 1+i).Select
End If
Next
End Sub

Publicité
Titus68
 Posté le 21/12/2015 à 16:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

If Cells(ligne_numero1, 1+i).Value = "" Then

Cells(ligne_numero1, 1+i).Value = "bingo"

en laissant sur la même ligne il considère que le test if then ne s'éend pas au-délà de la ligne.

matbarns
 Posté le 21/12/2015 à 18:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

super !!!! il suffisait d'y penser !!!

j'ai donc essayé et ça fonctionne bien pour la première colonne (celle que j'ai appelée "1") mais si je relance une seconde fois ma macro (pour qu'il écrive "bingo" dans la colonne "2" si elle est vide) il me dit "incompatibilité de type"...

d'ailleurs au passage, je pensais bêtement que si je voulais qu'il regarde si la cellule était vide, il suffisait de mettre "" mais en fait non... :)

txuku
 Posté le 22/12/2015 à 11:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour

le If Not m a paru etrange..................

if ......... = false ?

matbarns
 Posté le 22/12/2015 à 21:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

c'était plus à partir du "for" que j'ai un souci...

pour le if not, on m'a un peu aidé aussi, et j'avoue que comme cela marchait, je ne me suis pas posé plus de questions que ça !!!

La première utilisation de la macro fonctionne bien, mais une fois que la cellule (4,2) est remplie, ça plante... et je ne comprends pas (encore) pourquoi....

LORENZO83
 Posté le 04/01/2016 à 10:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour

Essayez ceci

Sub Recherche_mot()
Dim ligne_numero1, ligne_numero2, c, i
Application.ScreenUpdating = False
With Worksheets(1).Range("A1:F5000")
Set c = .Find(What:="toto", LookIn:=xlValues)
If Not c Is Nothing Then
ligne_numero1 = c.Row
'ici la boucle pour trouver la dernière occurence
Do
For i = 1 To 5
If Cells(c.Row, 1 + i).Value = "" Then
Cells(c.Row, 1 + i).Value = "bingo"
Else
Cells(c.Row, 1 + i).Select
End If
Next
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Row <> ligne_numero1
Else
MsgBox "Désolé..... pas trouvé cette occurence": Exit Sub
End If
End With
End Sub

Cdlt

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
329,90 €Ecran ultra large LG 34 pouces 34WL50S-B à 329,90 €
Valable jusqu'au 24 Février

Amazon propose actuellement l'écran 34 pouces LG 34WL50S-B à 329,90 € livré gratuitement alors qu'on le trouve à partir de 400 € ailleurs. Cet écran ultra large est au format 21/9, possède une dalle IPS et offre une résolution de 2560 x 1080 pixels. Avec lui, vous pourrez bénéficier d'une plus grande immersion dans les jeux et les films. Cet écran est compatible FreeSync.


> Voir l'offre
109,99 €Tablette 9,6 pouces HUAWEI MediaPad T3 16 Go à 109,99 €
Valable jusqu'au 22 Février

Amazon fait une promotion sur la tablette tactile 9,6 pouces HUAWEI MediaPad T3 qui passe à 109,99 € alors qu'on la trouve ailleurs à partir de 130 €. Cette tablette a un écran de 9,6 pouces HD IPS, 2 Go de RAM, un processeur Quad core Qualcomm Snapdragon 425, 16 Go d'espace de stockage (extensible via microSD) et tourne sous Android 7.0. 


> Voir l'offre
GratuitJeu PC Aztez gratuit
Valable jusqu'au 20 Février

Epic Game Store offre actuellement le jeu PC Aztez. Aztez est un jeu hybride unique, entre beat them all et stratégie au tour par tour, qui se déroule au sein de l'Empire aztèque. Mettez fin aux conflits qui ravagent votre empire en pleine expansion dans des combats beat them all en temps réel et hautement techniques.


> Voir l'offre

Sujets relatifs
Fonction d'Excel
Fonction RANG
vba fonction on error resume next et excel 2013 non commercial?
Pied de page à ajouter sur 150 fichiers. Fonction rapide ?
fonction si estvide
Fonction RANG
Comment choisir la "fonction" de mes mails ?
EXCEL: Fonction DATEDIF
VBA Excel valeur en fonction de cellules
Fonction Si ou Macro ?
Plus de sujets relatifs à Fonction If then else
 > Tous les forums > Forum Bureautique