VBA - Compléter tableau sous condition

  • Initiateur de la discussion Initiateur de la discussion rouillld
  • 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 !

R

rouillld

Guest
Bonjour à toutes et à tous,

Dans le tableau dans le fichier joint, je désirerais effectuer les opérations suivantes :
1 - copier-coller ce tableau dans une autre feuille
2 - Complète les cellules de la colonne D "type bâtiment"
par exemple, si le N° de bâtiment est 1 en colonne C, les autres zones ayant la valeur 1 devront être complétées par "Hôpital" en colonne D

3 - Les lignes ayant la valeur "2" dans la colonne A "lignes à supprimer" soient supprimées

Merci d'avance pour vos réponses...

Bon après-midi.
 

Pièces jointes

Re : VBA - Compléter tableau sous condition

Salut rouillld et le forum
Une macro du style :
Code:
'Déclaration =============================
Dim Plage As Range, Cel As Range, X As Long
Dim Tab_V(), Flg As Boolean
Dim F As Worksheet
'MEI ======================================
Set F = Sheets("Feuil2")
ReDim Tab_V(2, 0)
'Copier ===================================
Range([A1], Cells(Cells(Rows.Count, "A").End(xlUp).Row, Cells(1, Columns.Count).End(xlToLeft).Column)).Copy _
      F.[A1]
'compléter les cellules ==================
For Each Cel In F.Range(F.[C2], F.Cells(Rows.Count, "C").End(xlUp))
    If Cel.Offset(0, 1) <> "" Then
        Flg = True
        For X = 0 To UBound(Tab_V, 2)
            If Cel.Offset(0, 1) = Tab_V(2, X) Then
                Flg = False
                Exit For
            End If
        Next X
        If Flg Then
            ReDim Preserve Tab_V(2, UBound(Tab_V, 2) + 1)
            Tab_V(1, UBound(Tab_V, 2)) = Cel
            Tab_V(2, UBound(Tab_V, 2)) = Cel.Offset(0, 1)
        End If
    Else
        For X = 0 To UBound(Tab_V, 2)
            If Tab_V(1, X) = Cel Then
                Cel.Offset(0, 1) = Tab_V(2, X)
                Exit For
            End If
        Next X
    End If
Next Cel
'Nettoyer =================================
For X = F.Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
    If F.Cells(X, "A") = 2 Then F.Rows(X).Delete
Next X
End Sub
Attention : ça présuppose que la première fois qu'on rencontre un numéro de bâtiment, son type est renseigné
A+
 
Re : VBA - Compléter tableau sous condition

Salut bbb38 et le forum
J'aime bien critiquer 😀
Dans ta macro, plusieurs problèmes à mon sens :
- Tu copies la feuille et la place en dernier => ce n'est pas ce qui est demandé
- Tu supprimes les lignes en partant de 1, vers la dernière : testes ta macro avec plusieurs lignes commençant par 2 => toutes ne seront pas effacées.
- Tu ne t'occupes que du bâtiment 1 => il faut renseigner les autres aussi (2, 3 et 4) et compléter la colonne D
=> ça impliquerait aussi que tu inverses tes "fonctions" Supprimer/Compléter : si tu supprimes la ligne 7 (2 / Ecole), tu perds le type de bâtiment ayant un n°2 (ouais, je sais, je me suis fait baiser 😀, je trouvais idiot de renseigner des lignes pour les supprimer, le contraire me semblait plus performant).

Je critique, mais en espérant que c'est une critique constructive.
A+
 
Re : VBA - Compléter tableau sous condition

Merci à tous pour vos réponses...

J'ai adapté le code de Gorfael à mon fichier, il me semblait le plus adapté après quelques essais. La macro marche nickel.

Bon dimanche à tous !
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
512
Réponses
5
Affichages
370
Retour