Utilisation de If

Bonjour,

J'ai des fichiers texte (format txt) que j'ouvre avec Excel, j'ai déjà crée la macro pour lancer sans problème, maintenant ce qu'il me faut c'est faire les actions suivantes :

Si dans la case B5 il y a "aN", remplacer aN par 0.

Si dans la case D5 ou dans la case E5 il n'y a rien (pas 0) ou un espace, ecrire 1 dans la case F5.

Comment faire?

Salut,

Essais :

Sub test()
If Range("B5").Value = "aN" Then
    Range("B5").Value = 0
End If

If Range("D5").Value = "" Or Range("D5").Value = " " Or Range("E5").Value = "" Or Range("E5").Value = " " Then
    Range("F5").Value = 1
End If

End Sub

Dis moi

damien

Alors c'est parfait sauf que je me heurte a un problème que je n'avais pas noté, c'est que parfois dans D5 ou E5 je n'ai pas rien ou un espace, mais une lettre, et ce qu'il me faut c'est : Si y'a rien, un espace, ou une combinaison chiffre+lettre, dans l'une OU l'autre on remplace le contenu de l'une ET l'autre, et on met 1 en F5...

Si tu sais comment faire... ? Merci!

Salut,

Je ne comprend pas vraiment tes critères :

SI contenu D5 = un espace ou D5 = vide ou D5 = lettre+chiffre OU E5=espace ou E5 = vide ou E5 = lettre+chiffre alors

=> D5 = ???? on remplace le contenu par quoi ?

=> E5 = ???? on remplace le contenu par quoi ?

=> F5 = 1

Si on a D5 = lettre seulement, on fait quoi ?

Et si on a E5 = nombre seulement, on fait quoi ?

Damien

Alors voilà, a la base j'ai des fichiers texte qui font, en général, six lignes, mais parfois en font plus, or j'ai fait un script pour copier coller automatiquement, et parfois ça copier coller une mauvaise case qui contient des chiffres et des lettres, que des lettres, ou rien ou un espace, mais jamais que des chiffres... Donc quand cette mauvaise case est copiée je veux remplacer les données par des 0, et écrire 1 en F5.

Si en E5 ou D 5 y'a que des chiffres c'est parfait, si y'a que des lettres c'est comme si y'avais que des chiffres, ont peut virer...

Je ne sais pas si ça peut aider mais j'imagine qu'en ne passant pas par Value like ou Value =, mais par le fait que Excel reconnaisse comme un nombre ou pas le chiffre (si il y a une lettre excel considèrera cela comme une série de lettre/chiffre et mis à gauche dans la cellule, alors que si il n'y a que des nombre, ce sera considéré comme une valeur numérique et mis à droite et disponible pour des équations... je ne sais pas si ça peut aider ou pas cette charactéristique... ?

Salut,

Donc si dans la cellule D5 il ya autre chose que des chiffres on fait les actions suivantes :

  • F5 = 1
  • D5 = 0
Puis

SI dans la cellule E5 il y autre chose que des chiffres on fait les actions suivantes ;

  • F5 = 1
  • D5 = 0

Cela fait en VBA :

Sub test()
If Range("B5").Value = "aN" Then
    Range("B5").Value = 0
End If

If IsNumeric(Range("D5").Value) = False Or Trim(Range("D5").Value) = "" Then
    Range("F5").Value = 1
    Range("D5").Value = 0
End If

If IsNumeric(Range("E5").Value) = False Or Trim(Range("E5").Value) = "" Then
    Range("F5").Value = 1
    Range("E5").Value = 0
End If
End Sub

A tester/ Dis moi si cela correspond a ta demande.

Damien

Alors pour correspondre à ma demande je pense qu'il faut rajouter que E=0 aussi quand il y a autre chose que des chiffres dans l'un des deux donc en gros :

Sub test()
If Range("B5").Value = "aN" Then
    Range("B5").Value = 0
End If

If IsNumeric(Range("D5").Value) = False Or Trim(Range("D5").Value) = "" Then
    Range("F5").Value = 1
    Range("D5").Value = 0
    Range("E5").Value = 0
End If

If IsNumeric(Range("E5").Value) = False Or Trim(Range("E5").Value) = "" Then
    Range("F5").Value = 1
    Range("D5").Value = 0
    Range("E5").Value = 0
End If
End Sub

Je m'en vais intégrer ça a mon code et le tester de ce pas, merci!

Juste un autre petit problème:

Je cherche à savoir tout les fichiers dans lesquels cette action a été effectuée, pour cela, une des solutions qui me semble la plus simple pour ne pas être coupé par des messages d'erreurs permanant (avec msgbox) serait la suivante :

Les noms de mes fichiers que j'ouvre et ferme automatiquement sont dans un autre tableur excel que j'ai attribué à Base avec Set Base = ActiveWorkbook, et j'ai fait en sorte que a la fin de chaque execution de la macro, le logiciel supprime la premiere ligne et la remplace par la seconde, ce qui fait qu'a chaque itération il utilise la case A1 comme adresse du fichier.

J'aimerais mettre en automatique à l'interieur de cette partie :

If IsNumeric(Range("D5").Value) = False Or Trim(Range("D5").Value) = "" Then
    Range("F5").Value = 1
    Range("D5").Value = 0
    Range("E5").Value = 0
Base.Activate
Range("A1").Select
Selection.copy
;coller dans la colone B dans la première case vide (en effet, je ne veux pas écraser l'adresse que je viendrais juste de copier) c'est donc cette action que je ne sais pas faire 
Seco.activate ; Seco est le nom donné au nouveau tableur ouvert à chaque fois. 

End If

If IsNumeric(Range("E5").Value) = False Or Trim(Range("E5").Value) = "" Then
    Range("F5").Value = 1
    Range("D5").Value = 0
    Range("E5").Value = 0
Base.Activate
Range("A1").Select
Selection.copy
;coller dans la colone B dans la première case vide (en effet, je ne veux pas écraser l'adresse que je viendrais juste de copier) c'est donc cette action que je ne sais pas faire 
Seco.activate ; Seco est le nom donné au nouveau tableur ouvert à chaque fois. 

End If

Un code qui me permettrait de faire la chose suivante ...

Salut,

N'ayant pas ton code global j'avoue avoir un peu de mal a comprendre la logique, mais :

Si tu veux ecrire la valeur de la cellule A1 dans la premiere cellule disponible de la colonne B :

Range("B65536").End(xlUp).Offset(1, 0).Value = Range("A1").Value

Damien

Merci ça marche nickel,

Et pour chercher par exemple dans la colone A si a un endroit il y a ky=, et en fonction, copier la cellule qui à le même numéro mais en colone B, comment faire?

Exemple de code

Sub copiesi()

Dim plagerecherche As Range
Dim c As Range

Set plagerecherche = Range("A1", Range("A65536").End(xlUp))

For Each c In plagerecherche
    If c.Value = "ky=" Then
        c.Offset(0, 1).Value = c.Value
    End If
Next

End Sub

Damien

Rechercher des sujets similaires à "utilisation"