Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro copier si egal rien

  • Initiateur de la discussion Initiateur de la discussion Cazinos
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Cazinos

XLDnaute Occasionnel
Bonsoir,

Voici une macro récuperer sur internet!
J'essaye de l'adapter mais pas simple

Voici ce que je cherche à faire :

Si la cellule de la colonne "C" est vide alors copie la formule "DEBIT" dans la colonne "11" sinon rien
et si la ligne est vide alors rien

Merci

Cazinos



Option Explicit
-----------------------------------------------------------------------------------
Sub Copier()

'selection feuille "FEUILLE"
Sheets("FEUILLE").Select

On Error Resume Next
Dim Cellule As Range

For Each Cellule In Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row)

"si la cellule de la colonne "C" égal rien alors copier formule "DEBIT"
If Cellule.Offset(1, 0) = "" Then

Range("A2:A" & [A65000].End(xlUp).Row).SpecialCells(xlCellTypeConstants, 23).Offset(, 11).Formula = [DEBIT].Formula
End If
Next
End Sub
 
Re : Macro copier si egal rien

Bonjour Cazinos, Re Pierrot 😉

Alors si tu pouvais nous fournir un bout de fichier exemple pour qu'on puisse vérifier si ta cellule est vide ou non, ça nous aiderait à te répondrre
 
Re : Macro copier si egal rien

Bonjour le fil,

A mon avis il fallait revoir la formule dans la cellule [DEBIT]...

La macro dans le fichier joint :

Code:
Sub Copier()
With Range("C2", Cells(Rows.Count, 3).End(xlUp)).SpecialCells(xlCellTypeConstants)
  Intersect(.EntireRow, [K:K]).FormulaR1C1 = [DEBIT].FormulaR1C1
End With
End Sub
A+
 

Pièces jointes

Re : Macro copier si egal rien

J'ai oublié de m'excuser

En fait, comme l'avez constater, j'ai commis une erreur dans ma demande

C'est uniquement quand une cellule de la colonne "c" est vide qu'il faut copier la formule dans la colonne "k"

Merci

Cazinos
 
Re : Macro copier si egal rien

Re,

Vous ne donnez pas votre avis sur la formule que j'ai mise dans la cellule [DEBIT] en Feuil2...

Mais tant pis, j'espère que cette fois sera la bonne :

Code:
Sub Copier()
Dim plage As Range
[K2].Resize(Rows.Count - 1).ClearContents 'RAZ
On Error Resume Next 'si pas de SpecialCells...
Set plage = [C2].Resize(Rows.Count - 1).SpecialCells(xlCellTypeConstants)
Set plage = Range(plage.Areas(1), plage.Areas(plage.Areas.Count))
Set plage = plage.SpecialCells(xlCellTypeBlanks)
If Err = 0 Then _
  Intersect(plage.EntireRow, [K:K]).FormulaR1C1 = [DEBIT].FormulaR1C1
End Sub
Edit : il manquait le test If Err = 0 Then

Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Re : Macro copier si egal rien

Bonjour le fil, le forum,

La solution (2) ne va pas s'il y a des formules en colonne C.

Celle-ci fonctionne quel que soit le type des valeurs :

Code:
Sub Copier()
Dim plage As Range, cel As Range
[K2].Resize(Rows.Count - 1).ClearContents 'RAZ
On Error Resume Next
Set plage = [C2].Resize(Cells(Rows.Count, 3).End(xlUp).Row - 1)
Set cel = plage.Find("*", , xlFormulas) '1ère cellule non vide
Set plage = cel.Resize(plage.Count - cel.Row + 2)
Set plage = plage.SpecialCells(xlCellTypeBlanks)
If Err = 0 Then _
  Intersect(plage.EntireRow, [K:K]).FormulaR1C1 = [DEBIT].FormulaR1C1
End Sub
A+
 

Pièces jointes

Re : Macro copier si egal rien

Re,

Une solution utilisant un tableau VBA (tablo) :

Code:
Sub Copier()
Dim h&, F$, tablo, i&, OK As Boolean
[K2].Resize(Rows.Count - 1).ClearContents 'RAZ
h = Cells(Rows.Count, "C").End(xlUp).Row - 1
If h < 2 Then Exit Sub
F = [DEBIT].FormulaR1C1
tablo = [C2].Resize(h)
For i = 1 To UBound(tablo)
  If Not IsEmpty(tablo(i, 1)) Then OK = True
  tablo(i, 1) = IIf(OK And IsEmpty(tablo(i, 1)), F, "")
Next
[K2].Resize(h) = tablo
End Sub
L'exécution est très rapide même sur de très grands tableaux.

Fichier (4).

A+
 

Pièces jointes

Dernière édition:
Re : Macro copier si egal rien

Re,

J'ai dupliqué le tableau (cellules vertes) jusqu'à la ligne 51001.

Voici les durées d'exécution sur Win XP, Excel 2003 :

- fichier (2) => 4,82 s

- fichier (3) => 2,45 s

- fichier (4) => 0,42 s

La solution par tableau est de loin la plus rapide.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
281
Réponses
15
Affichages
786
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…