Ajouter une valeur si la cellule est non vide

Bonjour à tous,

Contexte:

J'ai une colonne "B" avec des dates sans information relative à l'heure.

Problème:

Je souhaite insérer une heure (+0.760417) à la date présente dans la cellule à l'aide d'une macro.

Question:

Comment ajouter cette valeur "+0.760417" à toutes les cellules de la colonne "B" qui ne sont pas vide?

D'avance merci pour vos contributions.

Cordialement

Bonjour

Tu fais une boucle qui parcourt de la 1ère donnée jusqu'à la dernière

Vérifies si la cellule est vide et dans le cas contraire si c'est une date et dans l'affirmative rajoutes la valeur

C'est tout

Bonjour Banzai64,

Je suis vraiment un novice avec VBA, tu aurais la gentillesse de m'écrire un exemple de macro que je pourrais adapter ensuite?

D'avance merci.

Banzai64 a écrit :

Bonjour

Tu fais une boucle qui parcourt de la 1ère donnée jusqu'à la dernière

Vérifies si la cellule est vide et dans le cas contraire si c'est une date et dans l'affirmative rajoutes la valeur

C'est tout

Bonjour

A tester (non testé)

Sub test()
Dim J As Long
  For J = 1 To Range("B" & Rows.Count).End(xlUp).Row
    If Range("B" & J) <> "" Then
      If IsDate(Range("B" & J)) Then Range("B" & J) = Range("B" & J) + 0.760417
    End If
  Next J
End Sub

Bonjour Banzai64,

Merci la macro fonctionne parfaitement.

Comme je suis novice et pas trop bête , je cherche à comprendre ce que tu as fait. Voila ce que j'ai compris:

Sub test()
'
'Déclaration
    Dim XX As Long
'
'Commencer une boucle
    For XX = 1 To Range("B" & Rows.Count).End(xlUp).Row
'
'Tester si non vide et si date
        If Range("B" & XX) <> "" And IsDate(Range("B" & XX)) Then
'
'Ajouter la valeur à la cellule si test réalisé
            Range("B" & XX) = Range("B" & XX) + 0.760417
'
'Fin du test
        End If
'
'Passer à l'argument suivant
    Next XX

End Sub

Peus-tu me dire si ma compréhension est bonne?

Et si oui peus-tu me détailler ce que fait exactement:

    For XX = 1 To Range("B" & Rows.Count).End(xlUp).Row

Comme c'est la première fois que je travaille avec une boucle je cherche à bien comprendre.

Cordialement

Bonjour

Pour moi à 1ère vue pas de problème

Bien que j'aurais scinder les tests (vide et date), mais bon si cela fonctionne

 For XX = 1 To Range("B" & Rows.Count).End(xlUp).Row

On va boucler de la ligne 1 jusqu'à la dernière ligne (row) non vide de la colonne B

Range("B" & Rows.Count).End(xlUp).Row : Renvoie le numéro de ligne dont la cellule en colonne B est non vide, la fonction part de la fin de la colonne et remonte

Bonjour Banzai64,

J'ai donc bien compris, merci pour toutes tes explications.

Une dernière petite chose. J'ai nommé la colonne "B" "Testcolonne", comment je peux remplacer la référence à "B" par "Testcolonne" dans la macro?

D'avance merci

Bonjour

Aucune idée

Fournis un fichier

Après recherche essayes

Sub test()
Dim J As Long
  With Range("TestColonne")
    For J = .Row To .Range("A" & Rows.Count).End(xlUp).Row
      If .Range("A" & J) <> "" Then
        If IsDate(.Range("A" & J)) Then .Range("A" & J) = .Range("A" & J) + 0.760417
      End If
    Next J
  End With
End Sub

Bonjour banzai64,

T'es vraiment un champion , ça marche parfaitement.

Milles merci, bonne journée et à bientôt

Rechercher des sujets similaires à "ajouter valeur vide"