Concatener B3 + C3 pour savoir si supérieur à D3

Bonjour

Je joins un fichier pour explication.

Bonne réception.

Cordialement.

8concatener.xlsm (20.14 Ko)
Bonjour Bejouette,
je te propose ce code ci :
Sub Feuil1_Bouton1_Cliquer()

    'Feuil1_Bouton1_Cliquer Macro

    ActiveSheet.Unprotect

    If (Range("B3").Value + Range("C3").Value) > Range("D3") Then

    Range("E3") = "BC SUPERIEUR A D"

    Else
    Range("E3") = "BC N'EST PAS SUPERIEUR A D"
    End If
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

Ton problème était de ne pas avoir de Else dans ton code ce qui fait qu'il aurait forcément eu le message "BC N'est pas supérieur a D".

Le .Value permet de récupérer la valeur de la cellule comme ça on peut faire une addition des 2 valeurs des cellules B3 et C3

Bien Cordialement

bonjour,

edit : salutations dbbs

tu as un end if mal placé et un else qui manque, de plus il vaut mieux forcer une comparaison numérique en utilisant la fonction VAL(), pour le cas où les longueurs des 2 nombres seraient différentes.

Sub Feuil1_Bouton1_Cliquer()

    'Feuil1_Bouton1_Cliquer Macro

    ActiveSheet.Unprotect

    If Val(Range("B3") & Range("C3")) > Val(Range("D3")) Then

        Range("E3") = "BC SUPERIEUR A D"
    Else

        Range("E3") = "BC N'EST PAS SUPERIEUR A D"
    End If
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

Bonjour ddbs, bonjour h2so4.

En vous remerciant tous les deux pour avoir répondu à ma demande.

En effectuant un test avec vos deux propositions, il s'avère qu'en introduisant un 2 en B3 et un 5 en C3 et en ayant en D3 un total de 20 avec

ddbs BC N'EST PAS SUPERIEUR A D

h2so4 BC EST SUPERIEUR A D

Je retiens donc la proposition de h2so4

En tout cas, un GRAND merci à tous les deux.

SUPER

En revanche, je ne comprend pas h2so4 pourquoi tu as mis:

tu as un end if mal placé et un else qui manque

Bonne journée à tous les deux.

Bien cordialement.

re-bonjour,

En revanche, je ne comprend pas h2so4 pourquoi tu as mis:

tu as un end if mal placé et un else qui manque

parce que ton code initial est celui-ci et qu'il y manque un else et qu'il y a un end if mal placé

Sub Feuil1_Bouton1_Cliquer()

    'Feuil1_Bouton1_Cliquer Macro

    ActiveSheet.Unprotect

    If (Range("B3") & Range("C3")) > Range("D3") Then

    Range("E3") = "BC SUPERIEUR A D"
    End If ' <-- doit être un else

    Range("E3") = "BC N'EST PAS SUPERIEUR A D" 
    ' end if doit venir ici
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

Ok

Au tant pour moi.

Bonne journée.

Bonjour h2so4.

je m'adresse à vous car je ne sais pas comment formuler cette demande sur le forum.

La position de ma cellule est en C51.

Avec l'instruction suivante:

    If Val(Range("C51") & Range("D51")) > Val(Range("R49")) Then

J'obtiens une réponse satisfaisante. Il prend bien ma condition si elle est remplie.

Avec:

If Valselection & Range("D51") > Val(Range("R49")) Then

J'obtiens une réponse satisfaisante. Il prend bien ma condition si elle est remplie.

En revanche:

    If Valselection & ActiveCell.Offset(0, 1) > Val(Range("R49")) Then

En décalant ma cellule d'une colonne par Activecell.offset(0,1)

Avec cette modification d'instruction, il ne prend pas ma condition.

Si vous pouviez m'éclairer sur ce problème.

En vous remerciant.

Bien cordialement.

bonjour,

valselection (écrit tel correspond à une variable, je ne pense pas que ce soit le but recherché)

donc si j'ai bien compris ce que tu essayais de faire avec cette instruction, voici :

If Val(ActiveCell & ActiveCell.Offset(0, 1)) > Val(Range("R49")) Then

Re bonjour

En m'excusant pour cette réponse tardive, mais je me suis absenté.

Super.

MERCI.

C'est exactement ce que je veux.

J'ai cherché je ne sais combien de solution et manipulation pendant je ne sais combien de temps et je n'ai pas fait d'essai

en changeant sélection par activecell.

Le blaireau.............

En tout cas merci beaucoup.

Bien cordialement.

Bonjour h2so4.

Je me re adresse à vous car je ne sais pas comment formuler cette demande sur le forum.

La position de ma cellule est en J51. Si K51 et L51 ont un zéro je souhaite que les zéro disparaissent.

Avec l'instruction suivante :

    If ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 Then
    ActiveCell.Offset(0, 1) = ""
    ActiveCell.Offset(0, 2) = ""
    End If

J'obtiens une réponse satisfaisante. Il prend bien ma condition si elle est remplie.

En revanche si je regroupe sur une seule ligne avec la fonction and

    If ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 Then
    ActiveCell.Offset(0, 1) = "" And ActiveCell.Offset(0, 2) = ""
    End If

Avec cette modification d'instruction, il ne prend pas ma condition.

Erreur d'exécution '13':

Incompatibilité de type

Si vous pouviez m'éclairer sur ce problème.

En vous remerciant.

Bien cordialement.

Ps à partir de 10h00, je serais absent jusqu'à 19h00

bonjour,

En revanche si je regroupe sur une seule ligne avec la fonction and

If ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 Then

ActiveCell.Offset(0, 1) = "" And ActiveCell.Offset(0, 2) = ""

End If

Avec cette modification d'instruction, il ne prend pas ma condition.

ce n'est pas parce que l'on dit/écrit les choses d'une certaine façon en français, que c'est comme cela qu'on doit les traduire en VBA !

il faut respecter la syntaxe et comprendre la signification de chaque instruction.

chaque instruction doit être sur une ligne différente ou séparée par :

Pas par "And" : Le "And" est un opérateur logique (qui attend comme opérandes des valeurs VRAI ou FAUX)

Si on essaie de traduire ce que tu as écrit, ce serait quelque chose du genre :

mettre dans activecell.offset(0,1) le résultat de l'opération logique "AND" entre "" (pas un opérande logique, d'où l'erreur de type) et le résultat de la comparaison activecell.offset(0,2) avec "".

donc ta première écriture est correcte (une ligne par instruction)

    If ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 Then
       ActiveCell.Offset(0, 1) = ""
       ActiveCell.Offset(0, 2) = ""
    End If

et si tu veux les 2 instructions sur la même ligne (utilisation de ":")

    If ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 Then
        ActiveCell.Offset(0, 1) = "" :  ActiveCell.Offset(0, 2) = ""
    End If

Re bonjour

Super.

MERCI.

C'est exactement ce que je veux.

Et en plus avec les explications...........quoi demander de mieux.

Tu es GÉNIAL.

MERCI.

Bonne réception.

Bien cordialement.

Bonjour h2so4.

Je me re adresse à toi car je ne sais pas (encore) comment formuler cette demande sur le forum.

Je te joins un fichier pour explication de then qui ne passe pas sur else.

Bonne réception.

Cordialement.

bonsoir,

je te propose cette manière de faire :

Sub Bouton1_Cliquer()
    '
    ' Bouton1_Cliquer Macro

    'Sheets("Feuil1").ScrollArea = "B3,H3"
    Dim test As String

    test = Range("B3") & Range("C3") & Range("D3") & Range("E3") & Range("H3")

    Select Case test
        Case "12301" 'combinaison pour 1,2,3
            Range("G6") = 1
            Range("H6") = 2
            Range("I6") = 3
        Case "10300", "22300", "00300" 'combinaisons pour 0.1,0.2,0.3
            Range("G6") = 0.1
            Range("H6") = 0.2
            Range("I6") = 0.3
        Case Else 'toutes les autres combinaisons : on n'affiche rien
            Range("G6:I6").ClearContents
    End Select
End Sub

Bonsoir h2s04,

Super, merveilleux.

Merci à toi.

IMPECCABLE.

Bonne soirée.

Bien cordialement.

Rechercher des sujets similaires à "concatener savoir superieur"